public OzzyNodeOptionsBuilder <TDomain> UseInMemoryMonitoring() { Services.TryAddSingleton <IMonitoringRepository, InMemoryMonitoringRepository>(); Services.TryAddSingleton <INodesManager>(sp => { var repository = sp.GetService <IMonitoringRepository>(); var eventsManager = sp.GetTypeSpecificService <TDomain, IDomainEventsManager>(); return(new NodesManager(repository, eventsManager)); }); Services.AddTypeSpecificSingleton <TDomain, IDomainEventsProcessor>(sp => { var checkpointManager = new SimpleChekpointManager(sp.GetTypeSpecificService <TDomain, IPeristedEventsReader>()); var handler = new MonitoringEventsHandler(sp); return(new DomainEventsProcessor(handler, checkpointManager)); }); AddBackgroundProcess <NodesMonitoringProcess>(); return(this); }
public void MonitoringPoll() { bool listening = false; bool accepted = false; using (Context contex = Context.Create()) { using (ResponseSocket rep = contex.CreateResponseSocket()) { MonitoringEventsHandler repMonitor = new MonitoringEventsHandler(); repMonitor.OnAccepted = (addr, fd) => accepted = true; repMonitor.OnListening = (addr, fd) => listening = true; MonitorPoll monitorPoll = new MonitorPoll(contex, rep, "inproc://rep.inproc", repMonitor); monitorPoll.Timeout = TimeSpan.FromMilliseconds(100); var pollerTask = Task.Factory.StartNew(monitorPoll.Start); rep.Bind("tcp://127.0.0.1:5002"); using (RequestSocket req = contex.CreateRequestSocket()) { req.Connect("tcp://127.0.0.1:5002"); req.Send("a"); bool more; string m = rep.ReceiveString(out more); rep.Send("b"); string m2 = req.ReceiveString(out more); Assert.IsTrue(listening); Assert.IsTrue(accepted); monitorPoll.Stop(); Thread.Sleep(200); Assert.IsTrue(pollerTask.IsCompleted); } } } }
public void MonitoringPoll() { bool listening = false; bool connected = false; bool accepted = false; using (Context contex = Context.Create()) { Poller poller = new Poller(contex); using (ResponseSocket rep = contex.CreateResponseSocket()) { MonitoringEventsHandler repMonitor = new MonitoringEventsHandler(); repMonitor.OnAccepted = (addr, fd) => accepted = true; repMonitor.OnListening = (addr, fd) => listening = true; poller.AddMonitor(rep, "inproc://rep.inproc", repMonitor, true); rep.Bind("tcp://127.0.0.1:5002"); using (RequestSocket req = contex.CreateRequestSocket()) { MonitoringEventsHandler reqMonitor = new MonitoringEventsHandler(); reqMonitor.OnConnected = (addr, fd) => connected = true; poller.AddMonitor(req, "inproc://req.inproc", reqMonitor, true); var pollerTask = Task.Factory.StartNew(poller.Start); req.Connect("tcp://127.0.0.1:5002"); req.Send("a"); bool more; string m = rep.ReceiveString(out more); rep.Send("b"); string m2 = req.ReceiveString(out more); Assert.IsTrue(listening); Assert.IsTrue(connected); Assert.IsTrue(accepted); poller.Stop(); Thread.Sleep(100); Assert.IsTrue(pollerTask.IsCompleted); } } } }