Esempio n. 1
0
        /// <summary>reads an incoming Giop reply message from the Message input stream msgInput</summary>
        /// <remarks>Precondition: sourceStream contains a Giop reply Msg</remarks>
        /// <returns>the .NET reply Msg created from the Giop Reply</returns>
        internal IMessage ParseIncomingReplyMessage(CdrMessageInputStream msgInput,
                                                    IMethodCallMessage requestMessage,
                                                    GiopClientConnectionDesc conDesc)
        {
            Debug.WriteLine("receive reply message at client side");

            CdrInputStream    msgBody = msgInput.GetMessageContentReadingStream();
            GiopClientRequest request = new GiopClientRequest(requestMessage, conDesc, m_interceptionOptions);

            if (request.IsAsyncRequest)
            {
                try {
                    // with respec to interception, this is a new request -> call again send_request interception before reply
                    request.PrepareSecondAscyncInterception();
                    request.InterceptSendRequest();
                } catch (Exception ex) {
                    request.Reply = new ReturnMessage(ex, requestMessage);
                    Exception newException = request.InterceptReceiveException(ex);
                    if (newException == ex)
                    {
                        throw;
                    }
                    else
                    {
                        throw newException; // exeption has been changed by interception point
                    }
                }
            }
            // deserialize message body
            IMessage result = m_ser.DeserialiseReply(msgBody, msgInput.Header.Version, request,
                                                     conDesc);

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// reads a locate-request message.
        /// </summary>
        internal LocateRequestMessage ParseIncomingLocateRequestMessage(CdrMessageInputStream msgInput)
        {
            CdrInputStream msgBody = msgInput.GetMessageContentReadingStream();
            // deserialize message body
            LocateRequestMessage result = m_ser.DeserialiseLocateRequest(msgBody, msgInput.Header.Version);

            Debug.WriteLine("locate request for target-uri: " + result.TargetUri);
            return(result);
        }
Esempio n. 3
0
        /// <summary>reads an incoming Giop request-message from the message input stream msgInput</summary>
        /// <returns>the .NET request message created from this Giop-message</returns>
        internal IMessage ParseIncomingRequestMessage(CdrMessageInputStream msgInput,
                                                      GiopConnectionDesc conDesc)
        {
            CdrInputStream msgBody = msgInput.GetMessageContentReadingStream();

            // deserialize the message body (the GIOP-request id is included in this message)
            return(m_ser.DeserialiseRequest(msgBody, msgInput.Header.Version,
                                            conDesc, m_interceptionOptions));
        }
 /// <summary>
 /// reads a locate-request message.
 /// </summary>
 internal LocateRequestMessage ParseIncomingLocateRequestMessage(CdrMessageInputStream msgInput) {
     CdrInputStream msgBody = msgInput.GetMessageContentReadingStream();
     // deserialize message body
     LocateRequestMessage result = m_ser.DeserialiseLocateRequest(msgBody, msgInput.Header.Version);
     Debug.WriteLine("locate request for target-uri: " + result.TargetUri);
     return result;
 }
        /// <summary>reads an incoming Giop request-message from the message input stream msgInput</summary>
        /// <returns>the .NET request message created from this Giop-message</returns>
        internal IMessage ParseIncomingRequestMessage(CdrMessageInputStream msgInput,
                                                    GiopConnectionDesc conDesc) {
 
            CdrInputStream msgBody = msgInput.GetMessageContentReadingStream();
            // deserialize the message body (the GIOP-request id is included in this message)
            return m_ser.DeserialiseRequest(msgBody, msgInput.Header.Version,
                                            conDesc, m_interceptionOptions);
        }
        /// <summary>reads an incoming Giop reply message from the Message input stream msgInput</summary>
        /// <remarks>Precondition: sourceStream contains a Giop reply Msg</remarks>
        /// <returns>the .NET reply Msg created from the Giop Reply</returns>
        internal IMessage ParseIncomingReplyMessage(CdrMessageInputStream msgInput,
                                                  IMethodCallMessage requestMessage,
                                                  GiopClientConnectionDesc conDesc) {
            Debug.WriteLine("receive reply message at client side");
 
            CdrInputStream msgBody = msgInput.GetMessageContentReadingStream();
            GiopClientRequest request = new GiopClientRequest(requestMessage, conDesc, m_interceptionOptions);
            if (request.IsAsyncRequest) {
                try {
                    // with respec to interception, this is a new request -> call again send_request interception before reply
                    request.PrepareSecondAscyncInterception();
                    request.InterceptSendRequest();
                } catch (Exception ex) {
                    request.Reply = new ReturnMessage(ex, requestMessage);
                    Exception newException = request.InterceptReceiveException(ex);
                    if (newException == ex) {
                        throw;
                    } else {
                        throw newException; // exeption has been changed by interception point
                    }
                }
            }
            // deserialize message body
            IMessage result = m_ser.DeserialiseReply(msgBody, msgInput.Header.Version, request,
                                                     conDesc);
            return result;
        }