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)); }
/// <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); }
/// <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); }