/// <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); } }
/// <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); } }