/// <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);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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);
        }