コード例 #1
0
        /// <summary> Saves key value index to stream. </summary>
        public static void Save(KeyValueIndex index, Stream stream)
        {
            using (var writer = new BinaryWriter(stream))
            {
                writer.Write(index._capacity);
                writer.Write(index.PrefixLength);

                var buckets = index._buckets;
                for (int i = 0; i < buckets.Length; i++)
                {
                    writer.Write(buckets[i]);
                }
            }
        }
コード例 #2
0
        /// <summary> Creates instance of <see cref="KeyValueStore"/>. </summary>
        /// <param name="index">Index.</param>
        /// <param name="usage">Usage.</param>
        /// <param name="stream">Stream.</param>
        public KeyValueStore(KeyValueIndex index, KeyValueUsage usage, Stream stream)
        {
            _prefixLength = index.PrefixLength;
            _stream       = stream;

            // TODO configure consts
            _index = index;
            _usage = usage;

            // NOTE buffer size limited to byte.MaxValue which affect max string size
            _byteBuffer = new byte[256];
            _charBuffer = new char[256];

            // NOTE skip header
            _nextOffset = 2;
            stream.Seek(_nextOffset, SeekOrigin.Begin);
        }
コード例 #3
0
        /// <summary> Loads key value index from stream. </summary>
        public static KeyValueIndex Load(Stream stream)
        {
            using (var reader = new BinaryReader(stream))
            {
                var capacity     = reader.ReadInt32();
                var prefixLength = reader.ReadInt32();
                var index        = new KeyValueIndex(capacity, prefixLength);

                var buckets = index._buckets;
                for (int i = 0; i < buckets.Length; i++)
                {
                    buckets[i] = reader.ReadUInt32();
                }

                return(index);
            }
        }