本文整理汇总了C++中ZStreamW::Flush方法的典型用法代码示例。如果您正苦于以下问题:C++ ZStreamW::Flush方法的具体用法?C++ ZStreamW::Flush怎么用?C++ ZStreamW::Flush使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZStreamW
的用法示例。
在下文中一共展示了ZStreamW::Flush方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: spWriteFreeFlush
static void spWriteFreeFlush(SecBuffer& sb, const ZStreamW& w)
{
if (not sb.pvBuffer)
return;
if (not sb.cbBuffer)
{
spPSFT->FreeContextBuffer(sb.pvBuffer);
sb.pvBuffer = nullptr;
}
else
{
size_t countWritten = 0;
w.Write(sb.pvBuffer, sb.cbBuffer, &countWritten);
const bool shortWrite = (countWritten != sb.cbBuffer);
sb.cbBuffer = 0;
spPSFT->FreeContextBuffer(sb.pvBuffer);
sb.pvBuffer = nullptr;
if (shortWrite)
ZStreamW::sThrowEndOfStream();
w.Flush();
}
}
示例2: Write
//.........这里部分代码省略.........
if (ZLOG(s, eDebug, "ZTSWatcherServerAsync"))
s << "Write, sent IDs";
}
else if (fSyncNeeded)
{
if (ZLOG(s, eDebug, "ZTSWatcherServerAsync"))
s << "Write, sync";
fSyncNeeded = false;
vector<uint64> removedIDs;
vector<uint64> addedIDs;
vector<int64> removedQueries;
vector<ZTSWatcher::AddedQueryCombo> addedQueries;
vector<uint64> writtenTupleIDs;
vector<ZTuple> writtenTuples;
fRemovedIDs.swap(removedIDs);
fAddedIDs.swap(addedIDs);
fRemovedQueries.swap(removedQueries);
fAddedQueries.swap(addedQueries);
fWrittenTupleIDs.swap(writtenTupleIDs);
fWrittenTuples.swap(writtenTuples);
locker.Release();
vector<uint64> watcherAddedIDs;
vector<uint64> changedTupleIDs;
vector<ZTuple> changedTuples;
map<int64, vector<uint64> > changedQueries;
using ZUtil_STL::sFirstOrNil;
bool success = fTSWatcher->Sync(
sFirstOrNil(removedIDs), removedIDs.size(),
sFirstOrNil(addedIDs), addedIDs.size(),
sFirstOrNil(removedQueries), removedQueries.size(),
sFirstOrNil(addedQueries), addedQueries.size(),
watcherAddedIDs,
changedTupleIDs, changedTuples,
sFirstOrNil(writtenTupleIDs), sFirstOrNil(writtenTuples), writtenTupleIDs.size(),
changedQueries);
if (!success)
{
iStreamW.WriteUInt8(eResp_Close);
return false;
}
iStreamW.WriteUInt8(eResp_SyncResults);
iStreamW.WriteCount(watcherAddedIDs.size());
for (vector<uint64>::const_iterator
i = watcherAddedIDs.begin(), theEnd = watcherAddedIDs.end();
i != theEnd; ++i)
{
iStreamW.WriteUInt64(*i);
}
iStreamW.WriteCount(changedTupleIDs.size());
vector<ZTuple>::const_iterator iterCT = changedTuples.begin();
for (vector<uint64>::const_iterator
i = changedTupleIDs.begin(), theEnd = changedTupleIDs.end();
i != theEnd; ++i, ++iterCT)
{
iStreamW.WriteUInt64(*i);
(*iterCT).ToStream(iStreamW);
}
iStreamW.WriteCount(changedQueries.size());
for (map<int64, vector<uint64> >::const_iterator
i = changedQueries.begin(), theEnd = changedQueries.end();
i != theEnd; ++i)
{
iStreamW.WriteInt64((*i).first);
const vector<uint64>& theVector = (*i).second;
iStreamW.WriteCount(theVector.size());
for (vector<uint64>::const_iterator j = theVector.begin(); j != theVector.end(); ++j)
iStreamW.WriteUInt64(*j);
}
wroteAnything = true;
}
else if (fCallbackNeeded)
{
if (ZLOG(s, eDebug, "ZTSWatcherServerAsync"))
s << "Write, callback";
fCallbackNeeded = false;
locker.Release();
iStreamW.WriteUInt8(eResp_SyncSuggested);
wroteAnything = true;
}
if (wroteAnything)
ZStreamerWriter::Wake();
else
iStreamW.Flush();
return true;
}