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