Bend.SegmentBlockEncoderRecordOffsetList.add C# (CSharp) Метод

add() публичный Метод

public add ( RecordKey key, RecordUpdate data ) : void
key RecordKey
data RecordUpdate
Результат void
        public void add(RecordKey key, RecordUpdate data)
        {
            byte[] keybytes = key.encode();
            byte[] databytes = data.encode();

            RecordInfo ri;
            ri.record_start_pos = _curPos();
            ri.key_len = keybytes.Length;
            ri.data_len = databytes.Length;

            output.Write(keybytes, 0, keybytes.Length);
            output.Write(databytes, 0, databytes.Length);
            record_offsets.Add(ri);
        }

Usage Example

        public void T01_RecordOffsetList_sortedWalk()
        {
            string[] testvalues = { "test/1", "test/2", "test/3" };
            byte[] databuffer;

            // encode a buffer
            {
                MemoryStream ms = new MemoryStream();
                // add some values to the block encoder
                SegmentBlockEncoderRecordOffsetList enc = new SegmentBlockEncoderRecordOffsetList();
                enc.setStream(ms);
                for (int i = 0; i < testvalues.Length; i++) {
                    RecordKey tkey = new RecordKey().appendParsedKey(testvalues[i]);
                    RecordUpdate tupdate = RecordUpdate.WithPayload("data: " + testvalues[i]);

                    enc.add(tkey, tupdate);
                }
                enc.flush();

                databuffer = ms.ToArray();
            }

            Console.WriteLine("databuffer len : " + databuffer.Length);
            Console.WriteLine("Hex: " + Lsd.ToHexString(databuffer));

            // test sortedWalk
            {
                BlockAccessor rs = new BlockAccessor(databuffer);
                var decoder = new SegmentBlockDecoderRecordOffsetList(rs);
                int count = 0;
                foreach (var row in decoder.sortedWalk()) {
                    Console.WriteLine(row);
                    count++;
                }

                Assert.AreEqual(testvalues.Length, count, "wrong number of elements in sorted walk");
            }
        }
SegmentBlockEncoderRecordOffsetList