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()); }
public byte[] Serialize(TransactionJournal journal) { var expectedSize = sizeof(byte) + sizeof(Int32) + journal.Entries.Select(entry => { return(sizeof(Int64) + sizeof(Int32) + entry.Data.Length + sizeof(Int64) + sizeof(Int32) + Encoding.UTF8.GetByteCount(entry.StreamName)); }).Sum(); var writer = new BufferWriter(new byte[expectedSize]); writer.WriteByte(FORMAT_VERSION); writer.WriteInt32(journal.Entries.Count); foreach (var entry in journal.Entries) { WriteEntry(writer, entry); } return(writer.GetTrimmedBuffer()); }