/// <summary> /// Encodes a collection of messages into one byte[]. Encoded in order of list. /// </summary> /// <param name="messages">The collection of messages to encode together.</param> /// <returns>Encoded byte[] representing the collection of messages.</returns> public static byte[] EncodeMessageSet(IEnumerable<Message> messages) { var messageSet = new WriteByteStream(); foreach (var message in messages) { var encodedMessage = EncodeMessage(message); messageSet.Pack(((long)0).ToBytes(), encodedMessage.Length.ToBytes(), encodedMessage); } return messageSet.Payload(); }
/// <summary> /// Encodes a message object to byte[] /// </summary> /// <param name="message">Message data to encode.</param> /// <returns>Encoded byte[] representation of the message object.</returns> /// <remarks> /// Format: /// Crc (Int32), MagicByte (Byte), Attribute (Byte), Key (Byte[]), Value (Byte[]) /// </remarks> public static byte[] EncodeMessage(Message message) { var body = new WriteByteStream(); body.Pack(new[] { message.MagicNumber }, new[] { message.Attribute }, message.Key.ToIntSizedBytes(), message.BinaryValue.Length.ToBytes(), message.BinaryValue); var crc = Crc32.ComputeHash(body.Payload()); body.Prepend(crc); return body.Payload(); }