Exemplo n.º 1
0
        /// <summary>
        ///     Protected default construtor for creating a new id.
        /// </summary>
        public NyxBorg(
            ILogger <NyxBorg> logger,
            IConfigManager config,
            PluginManager plugman)
        {
            NodeId  = Guid.NewGuid().ToString("N");
            _config = config;
            _logger = logger;
            _config.WhenConfigChanges.ObserveOn(ThreadPoolScheduler.Instance).Subscribe(LoadConfig);
            _plugman = plugman;

            _messageLoopToken  = _messageLoopCancelation.Token;
            _serverCancelToken = _serverCancelationSource.Token;

            _disposables.Add(_messageSendResetEvent);
            _disposables.Add(_serverEvent);
            _disposables.Add(_messageLoopCancelation);
            _disposables.Add(_serverCancelationSource);

            LoadConfig(null);
            Heartbeat.CreateInstance(_lastHubIp, _port);
            //_heartbeat = new Heartbeat(_context, _lastHubIp, _port.ToString());
            ConnectionStatusStream = Observable.Create <ConnectionStatus>(o =>
            {
                _logger.Debug("Hearbeat restarted.");
                Heartbeat.Instance.Init();
                return(Heartbeat.Instance.ConnectionStatusStream.Subscribe(o));
            }).Repeat().Publish().RefCount();

            _disposables.Add(ConnectionStatusStream
                             .ObserveOn(ThreadPoolScheduler.Instance)
                             .Subscribe(x => _hubOnline = x.HasFlag(ConnectionStatus.Online)));

            _disposables.Add(NyxMessageStream.Subscribe(x =>
            {
                if (TotalInMessages == long.MaxValue)
                {
                    TotalInMessages = 0;
                }
                TotalInMessages++;
            }));

            _disposables.Add(OutMessageStream.Subscribe(x =>
            {
                if (TotalInMessages == long.MaxValue)
                {
                    TotalOutMessages = 0;
                }
                TotalOutMessages++;
            }));
        }