/// <summary> /// Serializes the <see cref="DataBag"/> instance to a buffer. /// </summary> /// <param name="message">The message.</param> /// <returns>The buffer containing the serialized data.</returns> protected override byte[] SerializeCore(T message) { var fields = MessageSerializer.Get(message.GetType()).Serialize(MessageDescriptions.GetAccessor(message)); string value = MessagingUtilities.CreateQueryString(fields); return(Encoding.UTF8.GetBytes(value)); }
protected override void DeserializeCore(T message, byte[] data) { string value = Encoding.UTF8.GetString(data); var serializer = MessageSerializer.Get(message.GetType()); var fields = MessageDescriptions.GetAccessor(message); serializer.Deserialize(HttpUtility.ParseQueryString(value).ToDictionary(), fields); }
/// <summary> /// Deserializes the <see cref="DataBag"/> instance from a buffer. /// </summary> /// <param name="message">The message instance to initialize with data from the buffer.</param> /// <param name="data">The data buffer.</param> protected override void DeserializeCore(T message, byte[] data) { string value = Encoding.UTF8.GetString(data); // Deserialize into message newly created instance. var serializer = MessageSerializer.Get(message.GetType()); var fields = MessageDescriptions.GetAccessor(message); serializer.Deserialize(QueryHelpers.ParseQuery(value).ToDictionary(), fields); }
public void SingleRequestMessageType() { this.factory.AddMessageTypes(new MessageDescription[] { MessageDescriptions.Get(typeof(RequestMessageMock), V1) }); var fields = new Dictionary <string, string> { { "random", "bits" }, }; Assert.IsNull(this.factory.GetNewRequestMessage(receiver, fields)); fields["Age"] = "18"; Assert.IsInstanceOf(typeof(RequestMessageMock), this.factory.GetNewRequestMessage(receiver, fields)); }
protected override void DeserializeCore(T message, byte[] data) { using (var stream = new MemoryStream(data)) { message.Deserialize(stream); } // Perform basic validation on message that the MessageSerializer would have normally performed. var messageDescription = MessageDescriptions.Get(message); var dictionary = messageDescription.GetDictionary(message); messageDescription.EnsureMessagePartsPassBasicValidation(dictionary); IMessage m = message; m.EnsureValidMessage(); }
public void SingleResponseMessageType() { this.factory.AddMessageTypes(new MessageDescription[] { MessageDescriptions.Get(typeof(DirectResponseMessageMock), V1) }); var fields = new Dictionary <string, string> { { "random", "bits" }, }; IDirectedProtocolMessage request = new RequestMessageMock(receiver.Location, V1); Assert.IsNull(this.factory.GetNewResponseMessage(request, fields)); fields["Age"] = "18"; IDirectResponseProtocolMessage response = this.factory.GetNewResponseMessage(request, fields); Assert.IsInstanceOf <DirectResponseMessageMock>(response); Assert.AreSame(request, response.OriginatingRequest); // Verify that we can instantiate a response with a derived-type of an expected request message. request = new TestSignedDirectedMessage(); response = this.factory.GetNewResponseMessage(request, fields); Assert.IsInstanceOf <DirectResponseMessageMock>(response); Assert.AreSame(request, response.OriginatingRequest); }