private void Dispatch(MessageDispatch dispatch, List <IMessageHandlerInvoker> invokers) { switch (_status) { case Status.Stopped: throw new InvalidOperationException("MessageDispatcher is stopped"); case Status.Stopping: if (dispatch.IsLocal) { break; } throw new InvalidOperationException("MessageDispatcher is stopping"); } if (invokers.Count == 0) { dispatch.SetIgnored(); return; } dispatch.SetHandlerCount(invokers.Count); foreach (var invoker in invokers) { if (invoker.ShouldHandle(dispatch.Message)) { Dispatch(dispatch, invoker); } } }
private void Dispatch(MessageDispatch dispatch, List <IMessageHandlerInvoker> invokers) { if (!_isRunning) { throw new InvalidOperationException("MessageDispatcher is stopped"); } if (invokers.Count == 0) { dispatch.SetIgnored(); return; } dispatch.SetHandlerCount(invokers.Count); foreach (var invoker in invokers) { Dispatch(dispatch, invoker); } }
public void Dispatch(MessageDispatch dispatch) { if (!_isRunning) { throw new InvalidOperationException("MessageDispatcher is stopped"); } var invokers = _invokers.GetValueOrDefault(dispatch.Message.TypeId(), _emptyInvokers) .Where(dispatch.ShouldInvoke) .ToList(); if (invokers.Count == 0) { dispatch.SetIgnored(); return; } dispatch.SetHandlerCount(invokers.Count); foreach (var invoker in invokers) { Dispatch(dispatch, invoker); } }
private void Dispatch(MessageDispatch dispatch, List<IMessageHandlerInvoker> invokers) { if (!_isRunning) throw new InvalidOperationException("MessageDispatcher is stopped"); if (invokers.Count == 0) { dispatch.SetIgnored(); return; } dispatch.SetHandlerCount(invokers.Count); foreach (var invoker in invokers) { Dispatch(dispatch, invoker); } }