コード例 #1
0
ファイル: BlobHeap.cs プロジェクト: Rex-Hays/GNIDA2
        public uint GetBlobIndex(byte[] blobValue)
        {
            ReadAllBlobs();

            if (_readBlobs.ContainsValue(blobValue))
            {
                return(_readBlobs.FirstOrDefault(b => b.Value == blobValue).Key);
            }

            _mainStream.Seek(0, SeekOrigin.End);
            uint index = (uint)_mainStream.Position;

            NETGlobals.WriteCompressedUInt32(_binWriter, (uint)blobValue.Length);
            _binWriter.Write(blobValue);
            _readBlobs.Add(index, blobValue);
            return(index);
        }
コード例 #2
0
ファイル: BlobHeap.cs プロジェクト: Rex-Hays/GNIDA2
        internal void Reconstruct()
        {
            // will be removed once blobs are being serialized.

            MemoryStream newStream = new MemoryStream();
            BinaryWriter writer    = new BinaryWriter(newStream);

            writer.Write((byte)0);
            ReadAllBlobs();

            foreach (var blob in _readBlobs)
            {
                NETGlobals.WriteCompressedUInt32(writer, (uint)blob.Value.Length);
                writer.Write(blob.Value);
            }

            _mainStream.Dispose();
            _binReader.Dispose();
            _binWriter.Dispose();
            _mainStream             = newStream;
            _binReader              = new BinaryReader(newStream);
            _binWriter              = new BinaryWriter(newStream);
            this._streamHeader.Size = (uint)newStream.Length;
        }