本文整理汇总了C++中LogFile::getSamplePos方法的典型用法代码示例。如果您正苦于以下问题:C++ LogFile::getSamplePos方法的具体用法?C++ LogFile::getSamplePos怎么用?C++ LogFile::getSamplePos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LogFile
的用法示例。
在下文中一共展示了LogFile::getSamplePos方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createIndexFile
bool IndexFile::createIndexFile(std::string indexFileName, LogFile& logFile)
{
std::cout << "Creating Index File for logfile " << logFile.getFileName() << std::endl;
std::vector<char> writeBuffer;
writeBuffer.resize(8096 * 1024);
std::fstream indexFile;
indexFile.rdbuf()->pubsetbuf(writeBuffer.data(), writeBuffer.size());
indexFile.open(indexFileName.c_str(), std::fstream::out | std::fstream::binary | std::fstream::trunc);
const std::vector< StreamDescription > streams(logFile.getStreamDescriptions());
indices.resize(streams.size());
// std::cout << "Found " << streams.size() << " datastreams " << std::endl;
for(std::vector< StreamDescription >::const_iterator it = streams.begin(); it != streams.end(); it++)
{
Index *newIndex = new Index(*it);
size_t index = it->getIndex();
if(index >= indices.size() )
{
throw std::runtime_error("Error building Index, Unexpected stream index");
}
indices[index] = newIndex;
}
while(logFile.readNextBlockHeader())
{
if(!logFile.readSampleHeader())
{
throw std::runtime_error("Error building index, log file seems corrupted");
}
indices[logFile.getSampleStreamIdx()]->addSample(logFile.getSamplePos(), logFile.getSampleTime());
}
IndexFileHeader header;
header.numStreams = streams.size();
assert(header.magic == header.getMagic());
indexFile.write((char *) &header, sizeof(header));
if(!indexFile.good())
throw std::runtime_error("Error writing index header");
off_t curProloguePos = sizeof(IndexFileHeader);
off_t curDataPos = indices.size() * Index::getPrologueSize() + sizeof(IndexFileHeader);
for(std::vector<Index* >::iterator it = indices.begin(); it != indices.end(); it++)
{
// std::cout << "Writing index for stream " << (*it)->getName() << " , num samples " << (*it)->getNumSamples() << std::endl;
//Write index prologue
curDataPos = (*it)->writeIndexToFile(indexFile, curProloguePos, curDataPos);
curProloguePos += Index::getPrologueSize();
if(!indexFile.good())
throw std::runtime_error("Error writing index File");
delete *it;
}
indexFile.close();
// std::cout << "done " << std::endl;
indices.clear();;
return true;
}