コード例 #1
0
        public IPipeline Build()
        {
            var pipeline = new Pipeline();
            //pipeline.Add(new ReconnectHandler(TimeSpan.FromSeconds(15)));
            var commandDispatcher = new CommandDispatcher();

            var logger =
                new ProtocolTrace(new FileStream(@"C:\temp\Str" + DateTime.Now.ToString("yyyy-MM-dd HHmmss") + ".log",
                                                 FileMode.Create));

            var eventFactory = new EventFactory();

            eventFactory.MapDefault();
            var eventDecoder = new EventDecoder(eventFactory);

            //channel will call this one.
            pipeline.AddUpstreamHandler(logger);
            pipeline.AddUpstreamHandler(new MessageDecoder());
            pipeline.AddUpstreamHandler(eventDecoder);
            pipeline.AddUpstreamHandler(commandDispatcher);
            pipeline.AddUpstreamHandler(new AuthenticationHandler(_password));
            pipeline.AddUpstreamHandler(_client);

            pipeline.AddDownstreamHandler(commandDispatcher);
            pipeline.AddDownstreamHandler(new MessageEncoder());
            pipeline.AddDownstreamHandler(logger);
            return(pipeline);
        }
コード例 #2
0
        public void TestDownstreamOrder()
        {
            var pipeline = new Pipeline();

            pipeline.AddDownstreamHandler(new DownstreamOrderHandler(2));
            pipeline.AddDownstreamHandler(new DownstreamOrderHandler(1));
            pipeline.AddDownstreamHandler(new DownstreamOrderHandler(0));
            pipeline.SendDownstream(new MyMessage());
            Assert.Equal(-1, DownstreamOrderHandler.CurrentIndex);
        }
コード例 #3
0
 public HttpListener(IPipelineFactory clientFactory)
 {
     _pipeline = new Pipeline();
     _pipeline.AddDownstreamHandler(this);
     _pipeline.AddUpstreamHandler(this);
     _serverChannel = new TcpServerChannel(_pipeline, clientFactory, 2000);
 }
コード例 #4
0
        public void SendUpStreamAndSwitchToDown()
        {
            var pipeline             = new Pipeline();
            IPipelineMessage downMsg = null;

            pipeline.AddUpstreamHandler(new MyUpHandler((ctx, m) =>
            {
                var upMsg = m;
                ctx.SendDownstream(upMsg);
            }));
            pipeline.AddDownstreamHandler(new MyDownHandler((ctx, m) => downMsg = m));
            pipeline.SendUpstream(new Disconnected(new Exception()));
            Assert.NotNull(downMsg);
        }