void StoreHashIndex()
{
RemoveAllHashIndexAndUnknownFiles();
var file = _fileCollection.AddFile("chi");
var writer = file.GetAppenderWriter();
var keyCount = _cache.Count;
var fileInfo = new FileHashIndex(AllocNewFileGeneration(), _keySize, keyCount);
_fileInfos.TryAdd(file.Index, fileInfo);
fileInfo.WriteHeader(writer);
var keyBuf = ByteBuffer.NewSync(new byte[_keySize]);
foreach (var cachePair in _cache)
{
cachePair.Key.FillBuffer(keyBuf);
writer.WriteVUInt32(cachePair.Value.FileOfs);
writer.WriteVUInt32(cachePair.Value.FileId);
writer.WriteVUInt32(cachePair.Value.AccessRate);
writer.WriteVUInt32(cachePair.Value.ContentLength);
writer.WriteBlock(keyBuf);
}
writer.WriteVUInt32(0); // Zero FileOfs as End of file mark
file.HardFlush();
}