Example #1
0
 private void AddConnectionToConnections(Connection connection)
 {
     if (Connections.All(c => c.Name != connection.Name))
     {
         Connections = new List<Connection>(Connections) { connection };
     }
 }
Example #2
0
 /// <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();
         }
     }
 }
Example #3
0
        /// <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");
            }
        }
Example #4
0
 public ConsumerFactory(IAmACommandProcessor commandProcessor, IAmAMessageMapperRegistry messageMapperRegistry, Connection connection, ILog logger)
 {
     this.commandProcessor      = commandProcessor;
     this.messageMapperRegistry = messageMapperRegistry;
     this.connection            = connection;
     this.logger = logger;
 }
Example #5
0
 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");
     }
 }
Example #6
0
 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;
 }