public PatternMessage(IBufferedMessageData messageData, MessageVersion messageVersion)
            {
                this.messageData          = messageData;
                this.recycledMessageState = messageData.TakeMessageState();
                if (this.recycledMessageState == null)
                {
                    this.recycledMessageState = new System.ServiceModel.Channels.RecycledMessageState();
                }
                this.properties = this.recycledMessageState.TakeProperties();
                if (this.properties == null)
                {
                    this.properties = new MessageProperties();
                }
                this.headers = this.recycledMessageState.TakeHeaders();
                if (this.headers == null)
                {
                    this.headers = new MessageHeaders(messageVersion);
                }
                else
                {
                    this.headers.Init(messageVersion);
                }
                XmlDictionaryReader messageReader = messageData.GetMessageReader();

                messageReader.ReadStartElement();
                ReceivedMessage.VerifyStartBody(messageReader, messageVersion.Envelope);
                base.ReadStartBody(messageReader);
                this.reader = messageReader;
            }
Example #2
0
 public override Message CreateMessage()
 {
     lock (ThisLock)
     {
         if (closed)
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateBufferDisposedException());
         }
         RecycledMessageState recycledMessageState = messageData.TakeMessageState();
         if (recycledMessageState == null)
         {
             recycledMessageState = new RecycledMessageState();
         }
         BufferedMessage bufferedMessage = new BufferedMessage(messageData, recycledMessageState, understoodHeaders, understoodHeadersModified);
         bufferedMessage.Properties.CopyProperties(properties);
         messageData.Open();
         return(bufferedMessage);
     }
 }
Example #3
0
            public PatternMessageBuffer(IBufferedMessageData messageDataAtBody, MessageVersion messageVersion,
                KeyValuePair<string, object>[] properties, MessageHeaders headers)
            {
                _messageDataAtBody = messageDataAtBody;
                _messageDataAtBody.Open();

                _recycledMessageState = _messageDataAtBody.TakeMessageState();
                if (_recycledMessageState == null)
                {
                    _recycledMessageState = new RecycledMessageState();
                }

                _headers = _recycledMessageState.TakeHeaders();
                if (_headers == null)
                {
                    _headers = new MessageHeaders(messageVersion);
                }
                _headers.CopyHeadersFrom(headers);
                _properties = properties;
                _messageVersion = messageVersion;
            }
Example #4
0
            public PatternMessage(IBufferedMessageData messageData, MessageVersion messageVersion,
                KeyValuePair<string, object>[] properties, MessageHeaders headers)
            {
                _messageData = messageData;
                _messageData.Open();
                _recycledMessageState = _messageData.TakeMessageState();
                if (_recycledMessageState == null)
                {
                    _recycledMessageState = new RecycledMessageState();
                }

                _properties = _recycledMessageState.TakeProperties();
                if (_properties == null)
                {
                    _properties = new MessageProperties();
                }
                if (properties != null)
                {
                    _properties.CopyProperties(properties);
                }

                _headers = _recycledMessageState.TakeHeaders();
                if (_headers == null)
                {
                    _headers = new MessageHeaders(messageVersion);
                }
                if (headers != null)
                {
                    _headers.CopyHeadersFrom(headers);
                }

                XmlDictionaryReader reader = messageData.GetMessageReader();
                reader.ReadStartElement();
                VerifyStartBody(reader, messageVersion.Envelope);
                ReadStartBody(reader);
                _reader = reader;
            }
Example #5
0
 public PatternMessage(IBufferedMessageData messageData, MessageVersion messageVersion)
 {
     _messageData = messageData;
     _recycledMessageState = messageData.TakeMessageState();
     if (_recycledMessageState == null)
     {
         _recycledMessageState = new RecycledMessageState();
     }
     _properties = _recycledMessageState.TakeProperties();
     if (_properties == null)
     {
         _properties = new MessageProperties();
     }
     _headers = _recycledMessageState.TakeHeaders();
     if (_headers == null)
     {
         _headers = new MessageHeaders(messageVersion);
     }
     else
     {
         _headers.Init(messageVersion);
     }
     XmlDictionaryReader reader = messageData.GetMessageReader();
     reader.ReadStartElement();
     VerifyStartBody(reader, messageVersion.Envelope);
     ReadStartBody(reader);
     _reader = reader;
 }