public MonitoringService(IQueuedHandler monitoringQueue,
                                 IPublisher statsCollectionBus,
                                 IPublisher mainBus,
                                 ICheckpoint writerCheckpoint,
                                 string dbPath,
                                 TimeSpan statsCollectionPeriod,
                                 IPEndPoint nodeEndpoint,
                                 StatsStorage statsStorage,
                                 IPEndPoint tcpEndpoint,
                                 IPEndPoint tcpSecureEndpoint)
        {
            Ensure.NotNull(monitoringQueue, "monitoringQueue");
            Ensure.NotNull(statsCollectionBus, "statsCollectionBus");
            Ensure.NotNull(mainBus, "mainBus");
            Ensure.NotNull(writerCheckpoint, "writerCheckpoint");
            Ensure.NotNullOrEmpty(dbPath, "dbPath");
            Ensure.NotNull(nodeEndpoint, "nodeEndpoint");
            Ensure.NotNull(tcpEndpoint, "tcpEndpoint");

            _monitoringQueue         = monitoringQueue;
            _statsCollectionBus      = statsCollectionBus;
            _mainBus                 = mainBus;
            _writerCheckpoint        = writerCheckpoint;
            _dbPath                  = dbPath;
            _statsStorage            = statsStorage;
            _statsCollectionPeriodMs = statsCollectionPeriod > TimeSpan.Zero
                                ? (long)statsCollectionPeriod.TotalMilliseconds
                                : Timeout.Infinite;
            _nodeStatsStream   = string.Format("{0}-{1}", SystemStreams.StatsStreamPrefix, nodeEndpoint);
            _tcpEndpoint       = tcpEndpoint;
            _tcpSecureEndpoint = tcpSecureEndpoint;
            _timer             = new Timer(OnTimerTick, null, Timeout.Infinite, Timeout.Infinite);
            _systemStats       = new SystemStatsHelper(Log, _writerCheckpoint, _dbPath, _statsCollectionPeriodMs);
        }
        public MonitoringService(IPublisher inputBus, IPublisher servicesBus, ICheckpoint writerCheckpoint, string dbPath, TimeSpan statsCollectionPeriod)
        {
            Ensure.NotNull(inputBus, "inputBus");
            Ensure.NotNull(servicesBus, "servicesBus");
            Ensure.NotNull(writerCheckpoint, "writerCheckpoint");

            _servicesBus             = servicesBus;
            _statsCollectionPeriodMs = (int)statsCollectionPeriod.TotalMilliseconds;
            _timer       = new Timer(OnTimerTicked, null, Timeout.Infinite, Timeout.Infinite);
            _systemStats = new SystemStatsHelper(Log, writerCheckpoint, dbPath);
        }
 public void Handle(SystemMessage.SystemInit message)
 {
     _systemStats = new SystemStatsHelper(Log, _writerCheckpoint, _dbPath);
     _timer.Change(_statsCollectionPeriodMs, Timeout.Infinite);
 }