Exemplo n.º 1
0
        /// <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();
                }
            }
        }