Exemplo n.º 1
0
        /// <summary>
        /// <see cref="omg.org.PortableInterceptor.ClientRequestInterceptor.send_request"></see>
        /// </summary>
        public void send_request(ClientRequestInfo ri)
        {
            ClientRequestInfoImpl internalInfo = (ClientRequestInfoImpl)ri;    // need access to connection information

            if ((internalInfo.ConnectionDesc.Connection.IsInitiatedLocal()) && // initiated in this appdomain
                (internalInfo.ConnectionDesc.ConnectionManager.SupportBiDir()))
            {
                GiopBidirectionalConnectionManager biDirConManager =
                    (GiopBidirectionalConnectionManager)internalInfo.ConnectionDesc.ConnectionManager;

                ListenPoint[]           listenPointsEntry = ConvertToListenPoints(biDirConManager.GetOwnListenPoints());
                BiDirIIOPServiceContext contextEntry      = new BiDirIIOPServiceContext(listenPointsEntry);

                ServiceContext svcContext = new ServiceContext(BI_DIR_IIOP.ConstVal,
                                                               m_codec.encode_value(contextEntry));
                ri.add_request_service_context(svcContext, true);

                biDirConManager.SetupConnectionForBidirReception(internalInfo.ConnectionDesc);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// <see cref="omg.org.PortableInterceptor.ServerRequestInterceptor.receive_request_service_contexts"></see>
        /// </summary>
        public void receive_request_service_contexts(ServerRequestInfo ri)
        {
            object svcCtx = null;

            try {
                svcCtx = ri.get_request_service_context(BI_DIR_IIOP.ConstVal);
            } catch (omg.org.CORBA.BAD_PARAM) {
                // context not found
            }

            if (svcCtx != null)
            {
                BiDirIIOPServiceContext receivedCtx =
                    (BiDirIIOPServiceContext)m_codec.decode_value(((ServiceContext)svcCtx).context_data,
                                                                  m_svcContextTypeCode);

                ServerRequestInfoImpl internalInfo = (ServerRequestInfoImpl)ri; // need access to connection information
                GiopBidirectionalConnectionManager biDirConManager =
                    (GiopBidirectionalConnectionManager)internalInfo.ConnectionDesc.ConnectionManager;
                biDirConManager.RegisterBidirectionalConnection(internalInfo.ConnectionDesc,
                                                                receivedCtx.listen_points);
            }
        }