コード例 #1
0
        private Connection SetCurrentConnection(Connection conn, out Object guid)
        {
            Connection previous = null;
            Current    current  = GetPICurrent();

            try {
                // tenta reaproveitar o guid
                guid = current.get_slot(_connectionIdSlotId);
                if (guid != null)
                {
                    previous = GetConnectionById(guid);
                    if (conn == null)
                    {
                        current.set_slot(_connectionIdSlotId, null);
                        SetConnectionById(guid, null);
                        return(previous);
                    }
                }
                else
                {
                    if (conn == null)
                    {
                        return(null);
                    }
                    guid = new Object();
                    current.set_slot(_connectionIdSlotId, guid);
                }
                SetConnectionById(guid, conn);
                return(previous);
            }
            catch (InvalidSlot e) {
                Logger.Fatal(ConnectionIdErrorMsg, e);
                throw;
            }
        }
コード例 #2
0
ファイル: TestClient.cs プロジェクト: divyang4481/IIOPNet
        public void TestSlotModifyInClientRecContextAndServer()
        {
            try {
                int slotId = m_testInterceptorInit.RequestIntercept.SlotId;
                ORB orb    = OrbServices.GetSingleton();
                omg.org.PortableInterceptor.Current current =
                    (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
                int contextEntryVal = 4;
                current.set_slot(slotId, contextEntryVal);

                System.Int32 arg    = 1;
                System.Int32 result = m_testService.TestAddToContextData(arg);
                Assertion.AssertEquals(arg + contextEntryVal, result);

                Assertion.Assert("service context not present", m_testInterceptorInit.RequestIntercept.HasReceivedContextElement);
                Assertion.AssertEquals("service context content", arg + contextEntryVal,
                                       m_testInterceptorInit.RequestIntercept.ContextElement.TestEntry);

                current =
                    (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
                Assertion.AssertEquals("slot was modified", contextEntryVal, current.get_slot(slotId));
            } finally {
                m_testInterceptorInit.RequestIntercept.ClearInvocationHistory();
            }
        }
コード例 #3
0
        public bool NoValueInScope()
        {
            ORB orb = OrbServices.GetSingleton();

            omg.org.PortableInterceptor.Current current =
                (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
            return(current.get_slot(m_slotId) == null);
        }
コード例 #4
0
        public System.Int32 TestAddToContextData(System.Int32 arg)
        {
            ORB orb = OrbServices.GetSingleton();

            omg.org.PortableInterceptor.Current current =
                (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
            int contextData = (int)current.get_slot(m_slotId);
            int result      = contextData + arg;

            current.set_slot(m_slotId, result);
            return(result);
        }
コード例 #5
0
ファイル: Interceptors.cs プロジェクト: divyang4481/IIOPNet
 public void receive_request(ServerRequestInfo ri)
 {
     // modify request scope after copy to the thread scope -> must not be propagated to the thread scope.
     if (ri.operation == "TestReceiveReqNotChangeThreadScope")
     {
         ri.set_slot(m_slotId, 2 * (int)ri.get_slot(m_slotId));
     }
     else if (ri.operation == "TestReceiveReqChangeThreadScope")
     {
         ORB orb = OrbServices.GetSingleton();
         omg.org.PortableInterceptor.Current current =
             (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
         current.set_slot(m_slotId, 3 * (int)current.get_slot(m_slotId));
     }
 }
コード例 #6
0
ファイル: TestClient.cs プロジェクト: divyang4481/IIOPNet
        public void TestNoSlotSet()
        {
            // receive request modifies the thread scope slots
            try {
                int slotId = m_testInterceptorInit.RequestIntercept.SlotId;
                ORB orb    = OrbServices.GetSingleton();
                omg.org.PortableInterceptor.Current current =
                    (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
                current.set_slot(slotId, null);

                System.Boolean result = m_testService.NoValueInScope();
                Assertion.Assert("value in slot", result);

                Assertion.Assert("service context present", !m_testInterceptorInit.RequestIntercept.HasReceivedContextElement);

                current =
                    (omg.org.PortableInterceptor.Current)orb.resolve_initial_references("PICurrent");
                Assertion.AssertNull("slot was set", current.get_slot(slotId));
            } finally {
                m_testInterceptorInit.RequestIntercept.ClearInvocationHistory();
            }
        }