Beispiel #1
0
        void StoreHashIndex()
        {
            RemoveAllHashIndexAndUnknownFiles();
            var file             = _fileCollection.AddFile("chi");
            var writerController = file.GetExclusiveAppenderWriter();
            var writer           = new SpanWriter(writerController);
            var keyCount         = _cache.Count;
            var fileInfo         = new FileHashIndex(AllocNewFileGeneration(), _keySize, keyCount);

            _fileInfos.TryAdd(file.Index, fileInfo);
            fileInfo.WriteHeader(ref 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
            writer.Sync();
            file.HardFlushTruncateSwitchToDisposedMode();
        }
Beispiel #2
0
 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();
 }