/// <summary> /// Sends the upstream. /// </summary> /// <param name="message">The message.</param> /// <exception cref="System.ArgumentNullException">message</exception> public void SendUpstream(IUpstreamMessage message) { if (message == null) { throw new ArgumentNullException("message"); } if (_up == null) { throw new InvalidOperationException("No upstream handler has been set."); } _up.Invoke(message); }
/// <summary> /// Invokes all upstream messages. /// </summary> /// <exception cref="System.InvalidOperationException"></exception> public void InvokeUpstream() { if (_next == null && _upMessages.Count > 0) { throw new InvalidOperationException(string.Format("There is no more upstream handlers after '{0}'.", _mine.GetType().FullName)); } IUpstreamMessage message; while (_upMessages.TryDequeue(out message)) { _next.Invoke(message); } }
public void DestinationIsNotSet() { var upContext = new UpstreamContext(new ForwardingUpHandler()); var destination = Substitute.For<IUpstreamHandler>(); var downHandler = Substitute.For<IDownstreamHandler>(); var downContext = new DownstreamContext(downHandler); var pipeline = new Decoupled.Pipeline.Pipeline(); var msg = Substitute.For<IUpstreamMessage>(); pipeline.Add(downContext); pipeline.Add(upContext); pipeline.Add(new UpstreamContext(destination)); pipeline.Start(); upContext.Invoke(msg); destination.Received().HandleUpstream(Arg.Any<IUpstreamContext>(), msg); }