コード例 #1
0
 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);
 }
コード例 #2
0
        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);
                    }
                }
            }
        }
コード例 #3
0
ファイル: PollerTests.cs プロジェクト: oskarwkarlsson/netmq
        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);
                    }
                }
            }
        }