void WriteEntry(BufferWriter writer, JournalEntry entry)
        {
            writer.WriteInt64(entry.Address);
            writer.WriteInt32(entry.Data.Length);
            writer.WriteBytes(entry.Data);
            writer.WriteInt64(entry.Stamp);
            var streamNameBytes = Encoding.UTF8.GetBytes(entry.StreamName);

            writer.WriteInt32(streamNameBytes.Length);
            writer.WriteBytes(streamNameBytes);
        }
        public byte[] Serialize(IndexMetaRecord record)
        {
            var bytes  = new byte[5 * sizeof(Int64)];
            var writer = new BufferWriter(bytes);

            writer.WriteInt64(record.RootNodeAddress);
            writer.WriteInt64(record.NumberOfEntries);
            writer.WriteInt64(record.NumberOfNodes);
            writer.WriteInt64(record.TotalAllocatedSize);
            writer.WriteInt64(record.TotalAllocatedDataSize);
            return(writer.GetTrimmedBuffer());
        }
        public byte[] Serialize(CollectionFileRoot root)
        {
            var expectedSize = sizeof(byte)
                               + sizeof(Int32)
                               + sizeof(Int64)
                               + sizeof(Int64);
            var writer = new BufferWriter(new byte[expectedSize]);

            writer.WriteByte(SERIALIZATION_VERSION);
            writer.WriteInt32(root.FormatVersion);
            writer.WriteInt64(root.Head);
            writer.WriteInt64(root.NamedRecordIndexAddress);

            return(writer.GetTrimmedBuffer());
        }
Exemple #4
0
        public byte[] Serialize(Node <EmptyRecordIndexKey> node)
        {
            var bytes  = new byte[MaxSizeForDegree(node.Degree)];
            var writer = new BufferWriter(bytes);

            writer.WriteInt32(node.Degree);                 //Degree

            writer.WriteInt32(node.EntryList.Count);        //Nr of entries
            foreach (var entry in node.EntryList.Entries)
            {
                WriteEntry(writer, entry);                  //every entry
            }

            writer.WriteInt32(node.ChildrenAddresses.Count); //Nr of child addresses
            foreach (var childAddress in node.ChildrenAddresses.Addresses)
            {
                writer.WriteInt64(childAddress);            //every child address
            }

            return(writer.Buffer);
        }
Exemple #5
0
 void WriteEntry(BufferWriter writer, Entry <EmptyRecordIndexKey> entry)
 {
     writer.WriteInt32(entry.Key.S);     //Size
     writer.WriteInt64(entry.Key.A);     //Address
     writer.WriteInt64(entry.Pointer);   //Pointer (which is address too);
 }