public static void Write(BinaryWriter writer, MessageWithId item) { writer.Write(ReservedFormatVersion); writer.Write(item.Attributes); writer.Write(item.Id.GetBytes()); // we know for 100% that key length will be byte writer.Write((byte)item.Key.Length); writer.Write(item.Key); // we know for 100% that value length will be ushort writer.Write((ushort)item.Value.Length); writer.Write(item.Value); writer.Write(item.Crc32); }
public static MessageWithId Read(BinaryReader binary) { var version = binary.ReadByte(); if (version == 0) { throw new NoDataException(); } if (version != ReservedFormatVersion) { throw new InvalidStorageFormatException("Unknown storage format :" + version); } var flags = binary.ReadByte(); var id = binary.ReadBytes(16); var keyLength = binary.ReadByte(); var key = binary.ReadBytes(keyLength); var len = binary.ReadUInt16(); var data = binary.ReadBytes(len); var crc = binary.ReadUInt32(); var uuid = new MessageId(id); var message = new MessageWithId(uuid, flags, key, data, crc); return(message); }