Example #1
0
        public IMessageCtrl AsyncProcessMessage(IMessage msg,
                                                IMessageSink replySink)
        {
            ITransportHeaders transportHeaders = new TransportHeaders();
            Stream            stream           = _nextInChain.GetRequestStream(msg, transportHeaders);

            if (stream == null)
            {
                stream = new MemoryStream();
            }

            _binaryCore.Serializer.Serialize(stream, msg, null);
            if (stream is MemoryStream)
            {
                stream.Position = 0;
            }

            ClientChannelSinkStack stack = new ClientChannelSinkStack(replySink);

            stack.Push(this, msg);

            _nextInChain.AsyncProcessRequest(stack, msg, transportHeaders, stream);

            // FIXME: No idea about how to implement IMessageCtrl
            return(null);
        }
Example #2
0
        public IMessageCtrl AsyncProcessMessage(IMessage msg,
                                                IMessageSink replySink)
        {
            ITransportHeaders transportHeaders = new TransportHeaders();

            transportHeaders[CommonTransportKeys.RequestUri] = ((IMethodCallMessage)msg).Uri;
            transportHeaders["Content-Type"] = "application/octet-stream";

            Stream stream = _nextInChain.GetRequestStream(msg, transportHeaders);

            if (stream == null)
            {
                stream = new MemoryStream();
            }

            _binaryCore.Serializer.Serialize(stream, msg, null);
            if (stream is MemoryStream)
            {
                stream.Position = 0;
            }

            ClientChannelSinkStack stack = new ClientChannelSinkStack(replySink);

            stack.Push(this, msg);

            _nextInChain.AsyncProcessRequest(stack, msg, transportHeaders, stream);

            // FIXME: No idea about how to implement IMessageCtrl
            return(null);
        }
        } // AsyncProcessMessage

        // helper function to serialize the message
        private void SerializeMessage(IMessage msg,
                                      out ITransportHeaders headers, out Stream stream)
        {
            BaseTransportHeaders requestHeaders = new BaseTransportHeaders();

            headers = requestHeaders;

            // add other http soap headers
            requestHeaders.ContentType = CoreChannel.BinaryMimeType;
            if (_channelProtocol == SinkChannelProtocol.Http)
            {
                headers["__RequestVerb"] = "POST";
            }

            bool bMemStream = false;

            stream = _nextSink.GetRequestStream(msg, headers);
            if (stream == null)
            {
                stream     = new ChunkedMemoryStream(CoreChannel.BufferPool);
                bMemStream = true;
            }
            CoreChannel.SerializeBinaryMessage(msg, stream, _includeVersioning);
            if (bMemStream)
            {
                stream.Position = 0;
            }
        } // SerializeMessage
Example #4
0
        private void SerializeRequest(IMethodCallMessage methodCall, out ITransportHeaders requestHeaders, out Stream requestStream)
        {
            // get request stream
            requestHeaders = new TransportHeaders();
            requestStream  = _nextSink.GetRequestStream(methodCall, requestHeaders);
            if (requestStream == null)
            {
                requestStream = new ChunkedMemoryStream();
            }

            // serialize request
            _formatter.SerializeRequest(methodCall, requestHeaders, requestStream);
        }
Example #5
0
 /// <summary>serialises the .NET msg to a GIOP-message</summary>
 private void SerialiseRequest(IMessage msg, IIorProfile target, GiopClientConnectionDesc conDesc,
                               uint reqId,
                               out ITransportHeaders headers, out Stream stream)
 {
     headers = new TransportHeaders();
     headers[GiopClientConnectionDesc.CLIENT_TR_HEADER_KEY] = conDesc;
     // get the stream into which the message should be serialied from the first stream handling
     // sink in the stream handling chain
     stream = m_nextSink.GetRequestStream(msg, headers);
     if (stream == null)              // the next sink delegated the decision to which stream the message should be serialised to this sink
     {
         stream = new MemoryStream(); // create a new stream
     }
     m_messageHandler.SerialiseOutgoingRequestMessage(msg, target, conDesc, stream, reqId);
 }
Example #6
0
        private void SerializeRequest(IMessage msg, out ITransportHeaders headers, out Stream stream)
        {
            headers = new TransportHeaders();
            headers["Content-Type"]  = "application/octet-stream";
            headers["__RequestVerb"] = "POST";

            Boolean usingMemoryStream = false;

            stream = nextSink.GetRequestStream(msg, headers);
            if (stream == null)
            {
                stream            = new MemoryStream();
                usingMemoryStream = true;
            }

            CreateFormatter(true).Serialize(stream, msg, null);

            if (usingMemoryStream)
            {
                stream.Position = 0;
            }
        }
Example #7
0
        } // AsyncProcessMessage

        //
        // end of IMessageSink implementation
        //


        // helper function to serialize the message
        private void SerializeMessage(IMethodCallMessage mcm,
                                      out ITransportHeaders headers, out Stream stream)
        {
            BaseTransportHeaders requestHeaders = new BaseTransportHeaders();

            headers = requestHeaders;

            // add SOAPAction header
            MethodBase mb = mcm.MethodBase;

            headers["SOAPAction"] =
                '"' +
                HttpEncodingHelper.EncodeUriAsXLinkHref(
                    SoapServices.GetSoapActionFromMethodBase(mb)) +
                '"';

            // add other http soap headers
            requestHeaders.ContentType = CoreChannel.SOAPContentType;
            if (_channelProtocol == SinkChannelProtocol.Http)
            {
                headers["__RequestVerb"] = "POST";
            }

            bool bMemStream = false;

            stream = _nextSink.GetRequestStream(mcm, headers);
            if (stream == null)
            {
                stream     = new ChunkedMemoryStream(CoreChannel.BufferPool);
                bMemStream = true;
            }
            CoreChannel.SerializeSoapMessage(mcm, stream, _includeVersioning);
            if (bMemStream)
            {
                stream.Position = 0;
            }
        } // SerializeMessage
Example #8
0
 public Stream GetRequestStream(IMessage msg, ITransportHeaders headers)
 {
     return(_nextSink.GetRequestStream(msg, headers));
 }
 public Stream GetRequestStream(IMessage msg, ITransportHeaders headers)
 {
     // перенаправляем вызов следующему приемнику в стеке
     return(_nextSink.GetRequestStream(msg, headers));
 }
 System.IO.Stream IClientChannelSink.GetRequestStream(IMessage msg, ITransportHeaders headers)
 {
     return(nextSink.GetRequestStream(msg, headers));
 }
Example #11
0
 public Stream GetRequestStream(IMessage message, ITransportHeaders requestHeaders)
 {
     // Get the request stream from the next sink in the chain.
     return(nextSink.GetRequestStream(message, requestHeaders));
 }
Example #12
0
 public System.IO.Stream GetRequestStream(IMessage msg, ITransportHeaders headers)
 {
     return(_sink.GetRequestStream(msg, headers));
 }