/// <summary> /// Serailizer to binary format /// </summary> /// <param name="headerDeserResult">Result of deserialization of header</param> /// <param name="bodyDeserResult">Result of deserialization of body</param> /// <param name="bw">Binary writer</param> private void SerializeToBinary(DeserializeResult headerDeserResult, DeserializeResult bodyDeserResult, BinaryWriter bw) { MemoryStream ms = null; BinaryWriter tempBw = null; try { ms = new MemoryStream(); bw = new BinaryWriter(ms); var originalHeader = headerDeserResult.Instance as W3C.Soap.Header; var forwarderEnvelope = new ForwarderEnvelope(); forwarderEnvelope.Action = HeaderParser.ParseAction(originalHeader.Any); forwarderEnvelope.MessageId = HeaderParser.ParseMessageId(originalHeader.Any); forwarderEnvelope.TimeStamp = HeaderParser.ParseTimeStamp(originalHeader.Any); forwarderEnvelope.To = HeaderParser.ParseTo(originalHeader.Any); forwarderEnvelope.From = HeaderParser.ParseFrom(originalHeader.Any); forwarderEnvelope.Body = bodyDeserResult.Instance; forwarderEnvelope.Serialize(tempBw); bw.Write(BitConverter.GetBytes(ms.Position), 0, sizeof(long)); forwarderEnvelope.Serialize(bw); } finally { if (tempBw != null) { tempBw.Dispose(); } if (ms != null) { ms.Dispose(); } } }