private void Initalize(GiopTransportMessageHandler transportHandler,
                        uint requestId,
                        AsyncResponseAvailableCallBack callback,
                        IClientChannelSinkStack clientSinkStack,
                        GiopClientConnection connection,
                        MessageTimeout timeOutMillis) {
     m_alreadyNotified = false;
     m_transportHandler = transportHandler;
     m_requestId = requestId;
     m_callback = callback;
     m_clientConnection = connection;
     m_clientSinkStack = clientSinkStack;
     m_timeOut = timeOutMillis;
 }
 internal void SendRequestMessageAsync(Stream requestStream, uint requestId,
                                       AsyncResponseAvailableCallBack callback,
                                       IClientChannelSinkStack clientSinkStack,
                                       GiopClientConnection connection) {
     // interested in a response -> register to receive response.
     // this must be done before sending the message, because otherwise,
     // it would be possible, that a response arrives before being registered
     IResponseWaiter waiter;
     lock (m_waitingForResponse.SyncRoot) {
         // create and register wait handle
         waiter = new AsynchronousResponseWaiter(this, requestId, callback, clientSinkStack, connection,
                                                 m_timeout);
         if (!m_waitingForResponse.Contains(requestId)) {
             m_waitingForResponse[requestId] = waiter;
         } else {
             throw new omg.org.CORBA.INTERNAL(40, CompletionStatus.Completed_No);
         }
     }
     SendMessage(requestStream);
     connection.NotifyRequestSentCompleted();
     // wait for completion or timeout
     waiter.StartWaiting(); // notify the waiter, that the time for the request starts; is non-blocking
 }
 internal AsynchronousResponseWaiter(GiopTransportMessageHandler transportHandler,
                                     uint requestId,
                                     AsyncResponseAvailableCallBack callback,
                                     IClientChannelSinkStack clientSinkStack,
                                     GiopClientConnection connection,
                                     MessageTimeout timeOut) {
     Initalize(transportHandler, requestId, callback, clientSinkStack, connection, timeOut);
 }