public override BoltConnection NewConnection(BoltChannel channel, BoltStateMachine stateMachine) { requireNonNull(channel); requireNonNull(stateMachine); BoltScheduler scheduler = _schedulerProvider.get(channel); BoltConnectionReadLimiter readLimiter = CreateReadLimiter(_config, _logService); BoltConnectionQueueMonitor connectionQueueMonitor = new BoltConnectionQueueMonitorAggregate(scheduler, readLimiter); ChunkedOutput chunkedOutput = new ChunkedOutput(channel.RawChannel(), _throttleGroup); BoltConnection connection; if (_monitors.hasListeners(typeof(BoltConnectionMetricsMonitor))) { connection = new MetricsReportingBoltConnection(channel, chunkedOutput, stateMachine, _logService, scheduler, connectionQueueMonitor, _metricsMonitor, _clock); } else { connection = new DefaultBoltConnection(channel, chunkedOutput, stateMachine, _logService, scheduler, connectionQueueMonitor); } connection.Start(); return(connection); }
public override BoltScheduler Get(BoltChannel channel) { BoltScheduler boltScheduler = _boltSchedulers[channel.Connector()]; if (boltScheduler == null) { throw new System.ArgumentException(string.Format("Provided channel instance [local: {0}, remote: {1}] is not bound to any known bolt listen addresses.", channel.ServerAddress(), channel.ClientAddress())); } return(boltScheduler); }
private void StopScheduler(BoltScheduler scheduler) { try { scheduler.Stop(); } catch (Exception t) { _internalLog.warn(string.Format("An unexpected error occurred while stopping BoltScheduler [{0}]", scheduler.Connector()), t); } }