private void AddConnectionToConnections(Connection connection) { if (Connections.All(c => c.Name != connection.Name)) { Connections = new List<Connection>(Connections) { connection }; } }
/// <summary> /// Shuts the specified connection. /// </summary> /// <param name="connection">The connection.</param> public void Shut(Connection connection) { if (State == DispatcherState.DS_RUNNING) { _logger.Value.InfoFormat("Dispatcher: Stopping connection {0}", connection.Name); var consumersForConnection = Consumers.Where(consumer => consumer.Name == connection.Name).ToArray(); var noOfConsumers = consumersForConnection.Length; for (int i = 0; i < noOfConsumers; ++i) { consumersForConnection[i].Shut(); } } }
/// <summary> /// Opens the specified connection. /// </summary> /// <param name="connection">The connection.</param> public void Open(Connection connection) { _logger.Value.InfoFormat("Dispatcher: Opening connection {0}", connection.Name); AddConnectionToConnections(connection); var addedConsumers = CreateConsumers(new[] { connection }); switch (State) { case DispatcherState.DS_RUNNING: addedConsumers.Each(consumer => { _consumers.TryAdd(consumer.Name, consumer); consumer.Open(); _tasks.TryAdd(consumer.JobId, consumer.Job); }); break; case DispatcherState.DS_STOPPED: case DispatcherState.DS_AWAITING: addedConsumers.Each(consumer => _consumers.TryAdd(consumer.Name, consumer)); Start(); break; default: throw new InvalidOperationException("The dispatcher is not ready"); } }
public ConsumerFactory(IAmACommandProcessor commandProcessor, IAmAMessageMapperRegistry messageMapperRegistry, Connection connection, ILog logger) { this.commandProcessor = commandProcessor; this.messageMapperRegistry = messageMapperRegistry; this.connection = connection; this.logger = logger; }
public void Open(Connection connection) { if (State == DispatcherState.DS_RUNNING) { logger.Debug(m => m("Dispatcher: Opening connection {0}", connection.Name)); var addedConsumers = CreateConsumers(new List<Connection>() {connection}); addedConsumers.Each((consumer) => { Consumers.Add(consumer); consumer.Open(); tasks.Add(consumer.Job); } ); } else { throw new InvalidOperationException("Use Recieve to start the dispatcher; use Open to start a shut or added connection"); } }
public void Shut(Connection connection) { if (State == DispatcherState.DS_RUNNING) { logger.Debug(m => m("Dispatcher: Stopping connection {0}", connection.Name)); Consumers.Where(consumer => consumer.Name == connection.Name).Each((consumer) => consumer.Shut()); } }
public ConsumerFactory(IAmACommandProcessor commandProcessor, IAmAMessageMapperRegistry messageMapperRegistry, Connection connection) { _commandProcessor = commandProcessor; _messageMapperRegistry = messageMapperRegistry; _connection = connection; }