public static BinaryEnvelope FromQueue(Queue <byte[]> queue) { var binary = new BinaryEnvelope(); binary.Header = queue.Dequeue(); while (queue.Count != 0) { var binaryMessageEnvelope = new BinaryMessageEnvelope(); binaryMessageEnvelope.Header = queue.Dequeue(); binaryMessageEnvelope.Message = queue.Dequeue(); binary.AddBinaryMessageEnvelope(binaryMessageEnvelope); } return(binary); }
private BinaryMessageEnvelope WriteMessageEnvelope(MessageEnvelope messageEnvelope) { var binaryMessageEnvelope = new BinaryMessageEnvelope(); using (var headerMemory = new MemoryStream()) { _serializer.Model.SerializeWithLengthPrefix(headerMemory, messageEnvelope.Header, typeof(MessageHeader), PrefixStyle.Base128, 0); binaryMessageEnvelope.Header = headerMemory.ToArray(); } using (var messageMemory = new MemoryStream()) { _serializer.Model.SerializeWithLengthPrefix(messageMemory, messageEnvelope.Message, messageEnvelope.Message.GetType(), PrefixStyle.Base128, 0); binaryMessageEnvelope.Message = messageMemory.ToArray(); } return(binaryMessageEnvelope); }
private MessageEnvelope ReadMessageEnvelope(BinaryMessageEnvelope binaryMessageEnvelope) { MessageHeader messageHeader = null; IMessage message = null; using (var headerMemory = new MemoryStream(binaryMessageEnvelope.Header)) { messageHeader = (MessageHeader)_serializer.Model.DeserializeWithLengthPrefix(headerMemory, null, typeof(MessageHeader), PrefixStyle.Base128, 0, null); } var messageType = _tagToTypeResolver(messageHeader.MessageTag); using (var messageMemory = new MemoryStream(binaryMessageEnvelope.Message)) { message = (IMessage)_serializer.Model.DeserializeWithLengthPrefix(messageMemory, null, messageType, PrefixStyle.Base128, 0, null); } return(new MessageEnvelope(messageHeader, message)); }
public BinaryEnvelope AddBinaryMessageEnvelope(BinaryMessageEnvelope binaryMessageEnvelope, Action <Header> headerMutation) { binaryMessageEnvelope.MutateHeader(headerMutation); return(AddBinaryMessageEnvelope(binaryMessageEnvelope)); }
public BinaryEnvelope AddBinaryMessageEnvelope(BinaryMessageEnvelope binaryMessageEnvelope) { MessageEnvelopes.Add(binaryMessageEnvelope); return(this); }
public MessageEnvelope DeserializeMessageEnvelope(BinaryMessageEnvelope binaryMessageEnvelope) { return(ReadMessageEnvelope(binaryMessageEnvelope)); }