void patchExpressionFunctionObject::writeTheData(const word &pName,PatchValueExpressionDriver &driver) { Field<T> result(driver.getResult<T>()); AccumulationCalculation<T> calculator( result, driver.result().isPoint(), driver ); Field<T> results(accumulations_.size()); forAll(accumulations_,i) { const NumericAccumulationNamedEnum::accuSpecification accu= accumulations_[i]; T val=calculator(accu); results[i]=val; if(verbose()) { Info << " " << accu << "=" << val; } } if (Pstream::master()) { writeTime(pName,time().value()); writeData(pName,results); endData(pName); } }
void dumpSwakExpressionFunctionObject::writeTheData(CommonValueExpressionDriver &driver) { Field<T> result=driver.getResult<T>(); if (Pstream::master()) { writeTime(name(),time().value()); writeData(name(),result); endData(name()); } else { Pout << "My data is lost because for dumpSwakExpressionFunctionObject" << " only the masters data gets written" << endl; } }
void dumpSwakExpressionFunctionObject::writeTheData(CommonValueExpressionDriver &driver) { List<Field<T> > results(Pstream::nProcs()); results[Pstream::myProcNo()]=driver.getResult<T>(); Pstream::gatherList(results); if (Pstream::master()) { writeTime(name(),time().value()); forAll(results,procNo) { writeData(name(),results[procNo]); } endData(name()); }
void DownloadManager::on(UserConnectionListener::Data, UserConnection* aSource, const uint8_t* aData, size_t aLen) noexcept { Download* d = aSource->getDownload(); dcassert(d != NULL); try { d->addPos(d->getFile()->write(aData, aLen), aLen); d->tick(); if(d->getFile()->eof()) { endData(aSource); aSource->setLineMode(0); } } catch(const Exception& e) { failDownload(aSource, e.getError()); } }
void CDebugRouterClient::RunL() { TUint chunkSize = iSharedChunk.Size(); const TUint KDataStartOffset = sizeof(SDebugChunkHeader); SDebugChunkHeader* chunkHeader = (SDebugChunkHeader*)iSharedChunk.Base(); TUint start = chunkHeader->iStartOffset; TUint end = chunkHeader->iEndOffset; TUint overflows = chunkHeader->iOverflows; TBool wrap = (start > end); TUint endLen = wrap ? chunkSize - start : end - start; TUint startLen = wrap ? end - KDataStartOffset : 0; TPtrC8 endData(iSharedChunk.Base() + start, endLen); TPtrC8 startData; if (wrap) startData.Set(iSharedChunk.Base() + KDataStartOffset, startLen); TPtrC8 data(endData); while (data.Length()) { TPtrC8 header = Read(iTempBuf, data, sizeof(SCloggerTraceInfo), startData); if (header.Length() < (TInt)sizeof(SCloggerTraceInfo)) { ASSERT(EFalse); // for udeb break; // Something's broken } SCloggerTraceInfo info; Mem::Copy(&info, header.Ptr(), sizeof(SCloggerTraceInfo)); ASSERT(info.iTraceType == 'K' || info.iTraceType == 'U' || info.iTraceType == 'P'); TPtrC8 msg = Read(iTempBuf, data, info.iLength, startData); iServer.LogKernMessage(info.iTraceType, info.iTickCount, info.iThreadId, msg); } if (overflows) { _LIT8(KErr, "RDebug::Print buffer overflowed, %u calls not logged"); iServer.LogError(KErr, overflows); } // Zero the memory so it's easier to read in the crashlog memclr(iSharedChunk.Base() + start, endLen); if (startLen) memclr(iSharedChunk.Base() + KDataStartOffset, startLen); StartRouting(-1); // Magic number to indicate no need to call EnableDebugRouting again }
void DownloadManager::startData(UserConnection* aSource, int64_t start, int64_t bytes, bool z) { Download* d = aSource->getDownload(); dcassert(d != NULL); dcdebug("Preparing " I64_FMT ":" I64_FMT ", " I64_FMT ":" I64_FMT"\n", static_cast<long long int>(d->getStartPos()), static_cast<long long int>(start), static_cast<long long int>(d->getSize()), static_cast<long long int>(bytes)); if(d->getSize() == -1) { if(bytes >= 0) { d->setSize(bytes); } else { failDownload(aSource, _("Invalid size")); return; } } else if(d->getSize() != bytes || d->getStartPos() != start) { // This is not what we requested... failDownload(aSource, _("Response does not match request")); return; } try { QueueManager::getInstance()->setFile(d); } catch(const FileException& e) { failDownload(aSource, str(F_("Could not open target file: %1%") % e.getError())); return; } catch(const Exception& e) { failDownload(aSource, e.getError()); return; } if((d->getType() == Transfer::TYPE_FILE || d->getType() == Transfer::TYPE_FULL_LIST) && SETTING(BUFFER_SIZE) > 0 ) { d->setFile(new BufferedOutputStream<true>(d->getFile())); } if(d->getType() == Transfer::TYPE_FILE) { typedef MerkleCheckOutputStream<TigerTree, true> MerkleStream; d->setFile(new MerkleStream(d->getTigerTree(), d->getFile(), d->getStartPos())); d->setFlag(Download::FLAG_TTH_CHECK); } // Check that we don't get too many bytes d->setFile(new LimitedOutputStream<true>(d->getFile(), bytes)); if(z) { d->setFlag(Download::FLAG_ZDOWNLOAD); d->setFile(new FilteredOutputStream<UnZFilter, true>(d->getFile())); } d->setStart(GET_TICK()); d->tick(); aSource->setState(UserConnection::STATE_RUNNING); fire(DownloadManagerListener::Starting(), d); if(d->getPos() == d->getSize()) { try { // Already finished? A zero-byte file list could cause this... endData(aSource); } catch(const Exception& e) { failDownload(aSource, e.getError()); } } else { aSource->setDataMode(); } }