예제 #1
0
        public bool SessionMessage(Who sender, Message msg)
        {
            XType type = msg.GetXType;

            StubHelperRun helper = (StubHelperRun)type.GetStubHelper();

            if (helper == null)
            {
                return(false);
            }

            switch (type.GetAsyncMode())
            {
            case AsyncMode.QUEUED:
                try
                {
                    _queued.Run(
                        delegate { helper(_src, _obj, sender, msg); },
                        delegate(Exception e) { SessionNotify(_obj, e); });
                }
                catch (Exception e)
                {
                    SessionNotify(_obj, e);
                }
                break;

            case AsyncMode.FREE:
                try
                {
                    _free.Run(
                        delegate { helper(_src, _obj, sender, msg); },
                        delegate(Exception e) { SessionNotify(_obj, e); });
                }
                catch (Exception e)
                {
                    SessionNotify(_obj, e);
                }
                break;

            case AsyncMode.NONE:
                try
                {
                    helper(_src, _obj, sender, msg);
                }
                catch (Exception e)
                {
                    SessionNotify(_obj, e);
                }
                break;

            default:
                throw new ArgumentException("unknown async mode " + type.GetAsyncMode());
            }

            return(true);
        }
예제 #2
0
        static MyCuaeServerStub()
        {
            StubHelperRun helper1 = delegate(DeliveryService _src, object obj, Who _sender, Message _msg)
            {
                MyCuaeServerImpl impl = (MyCuaeServerImpl)obj;
                impl.dispatch(_sender, _msg);
            };

            //        MyValueFactoryCuae._mt_etch_bindings_csharp_examples_cuae_CuaeServer_doit.SetStubHelper(new StubHelper(helper1, StubHelper.AsyncMode.NONE));
            //        MyValueFactoryCuae._mt_etch_bindings_csharp_examples_cuae_CuaeServer_doit3.SetStubHelper(new StubHelper(helper1, StubHelper.AsyncMode.NONE));

            MyValueFactoryCuae._mt_etch_bindings_csharp_examples_cuae_CuaeServer_doit.SetStubHelper(helper1);
            MyValueFactoryCuae._mt_etch_bindings_csharp_examples_cuae_CuaeServer_doit3.SetStubHelper(helper1);
        }