public void FromToBytes()
        {
            // Arrange
            var version = new ProtocolVersion(1, 0);
            var name    = "Something";

            // Act
            var header  = new SerializationHeader(version, name);
            var bytes   = header.ToBytes();
            var header2 = SerializationHeader.FromBytes(bytes);

            // Assert
            Assert.That(header2.Protocol, Is.EqualTo(version));
            Assert.That(header2.InvariantName, Is.EqualTo(name));
        }
Beispiel #2
0
        /// <summary>
        /// Creates a <see cref="NetMQMessage"/> wrapping a request object
        /// </summary>
        /// <param name="request">Request object to be wrapped in a <see cref="NetMQMessage"/></param>
        /// <param name="requestId">An <see cref="int"/> identifier for matching asynchronous requests and responses</param>
        /// <returns><see cref="NetMQMessage"/> wrapping the request object</returns>
        public NetMQMessage CreateRequestMessage(object request, int requestId)
        {
            var serializer = serializerCache.DefaultSerializer;
            var package    = packageFactory.Pack(request);
            var header     = new SerializationHeader(new ProtocolVersion(1, 0), serializer.Descriptor.InvariantName);

            var data = serializer.Serialize(package, header.EncodedLength);

            header.ToBytes(data);

            var message = new NetMQMessage(4);

            message.AppendEmptyFrame();
            message.Append(requestId);
            message.AppendEmptyFrame();
            message.Append(data);
            return(message);
        }
Beispiel #3
0
        /// <summary>
        /// Creates a <see cref="NetMQMessage"/> wrapping a response object
        /// </summary>
        /// <param name="response">Response object to be wrapped in a <see cref="NetMQMessage"/></param>
        /// <param name="address">Address of the remote</param>
        /// <param name="requestId">An <see cref="int"/> identifier for matching asynchronous requests and responses</param>
        /// <param name="serializerName"><see cref="SerializationDescriptor"/> of the <see cref="ISerializer"/> to use</param>
        /// <returns><see cref="NetMQMessage"/> wrapping the response object</returns>
        public NetMQMessage CreateResponseMessage(object response, byte[] address, int requestId, string serializerName)
        {
            if (!serializerCache.SerializerFor(serializerName, out var serializer))
            {
                throw new MissingSerializerException(serializerName);
            }

            var package = packageFactory.Pack(response);
            var header  = new SerializationHeader(new ProtocolVersion(1, 0), serializerName);

            var data = serializer.Serialize(package, header.EncodedLength);

            header.ToBytes(data);

            var message = new NetMQMessage(5);

            message.Append(address);
            message.AppendEmptyFrame();
            message.Append(requestId);
            message.AppendEmptyFrame();
            message.Append(data);
            return(message);
        }