本文整理汇总了C++中IOBuffer::MoveData方法的典型用法代码示例。如果您正苦于以下问题:C++ IOBuffer::MoveData方法的具体用法?C++ IOBuffer::MoveData怎么用?C++ IOBuffer::MoveData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOBuffer
的用法示例。
在下文中一共展示了IOBuffer::MoveData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseDocument
bool TSDocument::ParseDocument() {
if (!DetermineChunkSize()) {
FATAL("Unable to determine chunk size");
return false;
}
if (!_mediaFile.SeekTo(_chunkSizeDetectionCount)) {
FATAL("Unable to seek at %"PRIu32, _chunkSizeDetectionCount);
return false;
}
_pParser->SetChunkSize(_chunkSize);
IOBuffer buffer;
uint32_t defaultBlockSize = ((1024 * 1024 * 4) / _chunkSize) * _chunkSize;
while (!_chunkSizeErrors) {
uint32_t available = (uint32_t) (_mediaFile.Size() - _mediaFile.Cursor());
if (available < _chunkSize) {
break;
}
if (GETAVAILABLEBYTESCOUNT(buffer) != 0) {
WARN("Leftovers detected");
break;
}
uint32_t blockSize = defaultBlockSize < available ? defaultBlockSize : available;
buffer.MoveData();
if (!buffer.ReadFromFs(_mediaFile, blockSize)) {
WARN("Unable to read %"PRIu32" bytes from file", blockSize);
break;
}
if (!_pParser->ProcessBuffer(buffer, false)) {
WARN("Unable to process block of data");
break;
}
}
return true;
}