예제 #1
0
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        void IDownstreamHandler.HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            if (message is DispatchCommand)
                _upstream[0].Invoke(new CommandCompleted((DispatchCommand) message));
            else if (message is DispatchEvent)
                _upstream[0].Invoke(new EventCompleted((DispatchEvent) message));

            // just ignore everything else.
        }
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _context = context;

            var msg = message as DispatchEvent;
            if (msg != null)
            {
                var batchId = _threadBatchIdMapper.GetBatchId();
                if (batchId != Guid.Empty)
                {
                    _storage.Hold(batchId, msg.DomainEvent);
                    return;
                }
            }


            context.SendDownstream(message);
        }
예제 #3
0
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchEvent"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _context = context;
            var msg = message as DispatchEvent;
            if (msg != null)
            {
                _queue.Enqueue(msg);

                // Not very much thread safe.
                if (Interlocked.Read(ref _currentWorkers) < _maxWorkers)
                {
                    Interlocked.Increment(ref _currentWorkers);
                    ThreadPool.QueueUserWorkItem(DispatchEventsNow);
                }
            }
            else if (message is Shutdown)
            {
                Close();
            }
        }
예제 #4
0
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _context = context;

            var sendCmd = message as DispatchCommand;
            if (sendCmd != null)
            {
                EnqueueCommand(sendCmd);
                return;
            }
            if (message is Shutdown)
            {
                Close();
            }
            if (message is StartHandlers)
            {
                StartWorker();
            }

            context.SendDownstream(message);
        }
예제 #5
0
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            var msg = message as DispatchCommand;
            if (msg != null)
            {
                _storage.Add(msg);
            }
            if (message is StartHandlers)
            {
                context.SendDownstream(message);

                var commands = _storage.FindFailedCommands(DateTime.Now.AddSeconds(-5));
                foreach (var command in commands)
                {
                    context.SendDownstream(command);
                }

                return;
            }
            context.SendDownstream(message);
        }
예제 #6
0
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchEvent"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _context = context;
            var msg = message as DispatchEvent;

            if (msg != null)
            {
                _queue.Enqueue(msg);

                // Not very much thread safe.
                if (Interlocked.Read(ref _currentWorkers) < _maxWorkers)
                {
                    Interlocked.Increment(ref _currentWorkers);
                    ThreadPool.QueueUserWorkItem(DispatchEventsNow);
                }
            }
            else if (message is Shutdown)
            {
                Close();
            }
        }
예제 #7
0
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _context = context;

            var sendCmd = message as DispatchCommand;

            if (sendCmd != null)
            {
                EnqueueCommand(sendCmd);
                return;
            }
            if (message is Shutdown)
            {
                Close();
            }
            if (message is StartHandlers)
            {
                StartWorker();
            }

            context.SendDownstream(message);
        }
예제 #8
0
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            var msg = message as DispatchCommand;

            if (msg != null)
            {
                _storage.Add(msg);
            }
            if (message is StartHandlers)
            {
                context.SendDownstream(message);

                var commands = _storage.FindFailedCommands(DateTime.Now.AddSeconds(-5));
                foreach (var command in commands)
                {
                    context.SendDownstream(command);
                }

                return;
            }
            context.SendDownstream(message);
        }
예제 #9
0
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            var msg = message as DispatchCommand;

            if (msg != null)
            {
                try
                {
                    _method.MakeGenericMethod(msg.Command.GetType()).Invoke(this, new object[] { msg.Command });
                    context.SendUpstream(new CommandCompleted(msg));
                }
                catch (Exception err)
                {
                    msg.AddFailedAttempt();
                    context.SendUpstream(new CommandFailed(msg, err));
                    return;
                }

                return;
            }

            context.SendDownstream(message);
        }
 /// <summary>
 /// Send a message to the command handler
 /// </summary>
 /// <param name="context">my context</param>
 /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
 public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
 {
     Invoked = true;
     context.SendDownstream(message);
 }
 /// <summary>
 /// Send a message to the command handler
 /// </summary>
 /// <param name="context">my context</param>
 /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
 public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
 {
     Invoked = true;
     context.SendDownstream(message);
 }
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _event.Set();

            _handler(context, message);
        }
        /// <summary>
        /// Send a message to the command handler
        /// </summary>
        /// <param name="context">my context</param>
        /// <param name="message">Message to send, typically <see cref="DispatchCommand"/>.</param>
        public void HandleDownstream(IDownstreamContext context, IDownstreamMessage message)
        {
            _event.Set();

            _handler(context, message);
        }