Example #1
0
        /// <summary>
        /// Creates the modules instance list in preferred execution order.
        /// </summary>
        private void BuildModuleListAccordingToPreference(IEnumerable <Type> scannedModules)
        {
            List <Type> moduleTypes = new List <Type>();

            // first add preferred types.
            foreach (Type moduleType in _preferredExecutionOrder)
            {
                if (scannedModules.Contains(moduleType) &&
                    !moduleTypes.Contains(moduleType))
                {
                    moduleTypes.Add(moduleType);
                }
            }

            // add other scanned types
            foreach (Type moduleType in scannedModules)
            {
                if (!moduleTypes.Contains(moduleType))
                {
                    moduleTypes.Add(moduleType);
                }
            }

            // create message module instances
            foreach (Type moduleType in moduleTypes)
            {
                _builder.Register(moduleType, moduleType);

                IMessageModule module = (IMessageModule)_builder.GetInstance(moduleType);
                _modules.Add(module);
            }
        }
        public void SetupContext()
        {
            _clientFactory = MockRepository.GenerateStrictMock<IClientFactory>();
            _client = MockRepository.GenerateStrictMock<IObjectContainer>();

            _clientFactory.Expect(x => x.OpenClient()).Return(_client);
            _clientFactory.Expect(x => x.Bind(_client));

            _mod = new Db4oMessageModule(_clientFactory);
        }
Example #3
0
        IMessageModule messageModule; //消息模块
        protected override void Start()
        {
            //获取消息模块
            messageModule = Framework.GetEnv(EnvironmentType.Ev0).modules.Message;

            Log.L("设置可以监听注册的类型的所有子类型");
            messageModule.fitSubType = true;
            Log.L("设置每帧处理的消息量为1");
            messageModule.processesPerFrame = 1;

            Log.L("");
            Log.L("注册监听使用消息模块的Subscribe方法");
            Log.L("Subscribe方法可以对一个监听器进行注册,也可以对单独的委托方法进行注册");
            Log.L("注意:使用监听器为参数注册的实质是注册了监听器的Listen方法");
            Log.L("");
            Log.L("在消息监听器的构造函数中就可以直接设置对IPub和MessageExample的监听");
            Log.L("开始实例化一个消息监听器");

            Listener listenner = new Listener(); //实例化一个消息监听器

            Log.L("");

            Log.L("使用消息模块的UnSubscribe方法可以对监听取消注册");
            //可以对监听器实例进行解绑
            messageModule.UnSubscribe <IPub>(listenner);
            //也可以对监听器里的Listen回调方法进行解绑
            messageModule.UnSubscribe <IPub>(listenner.Listen);
            Log.L("已取消对IPub和MessageExample的监听");

            Log.L("");

            Log.L("也可以用重载的非泛型的Subscribe方法注册监听,取消监听也一样有非泛型的方法");
            messageModule.Subscribe(typeof(IPub), listenner);
            messageModule.Subscribe(typeof(MessageExample), listenner.Listen);

            Log.L("已重新对IPub和MessageExample的消息监听进行注册");
            Log.L("");

            Log.L("以Pub的名义发送一个消息值为100的消息");
            messageModule.Publish <Pub>(null)
            .SetCode(100)
            .OnCompelete((msg) =>
            {
                Log.L("可以看到我们只监听了IPub但是还是收到了Pub的消息");
                Log.L($"当前消息的状态为{msg.state}   错误码为{msg.errorCode}");
                Log.L("");
                Log.L("发送的消息可以添加MessageUrgencyType参数来提高优先级");
                Log.L("紧急程度为立即的消息不受processesPerFrame规则影响");
                Log.L("----------------开始按键----------------");
                Log.L("按键之后将分别发送三条普通、三条不重要、三条非常紧急、一条立即");
                Log.L("然后再以异步的方式发送一条重要的消息");
            });
        }
        public void SetUp()
        {
            var nhibernateProperties = SQLiteConfiguration.Standard
                .UsingFile(Path.GetTempFileName())
                .ProxyFactoryFactory(typeof(ProxyFactoryFactory).AssemblyQualifiedName)
                .ToProperties();

            SessionFactory = new SessionFactoryBuilder(typeof(TestSaga).Assembly.GetTypes())
                .Build(nhibernateProperties, true);


            MessageModule = new NHibernateMessageModule { SessionFactory = SessionFactory };
            SagaPersister = new SagaPersister { SessionFactory = SessionFactory };
        }
        public void SetupContext()
        {
            _clientFactory = MockRepository.GenerateStrictMock<IClientFactory>();
            _client = MockRepository.GenerateStrictMock<IObjectContainer>();

            _clientFactory.Expect(x => x.Unbind()).Return(_client);
            _client.Expect(x => x.Close()).Return(true);
            _client.Expect(x => x.Dispose());

            _mod = new Db4oMessageModule(_clientFactory);
        }