Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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);
        }