Example #1
0
        protected override void OnRequest(byte OperationCode, Dictionary <byte, object> Parameters)
        {
            OperationCodes operationCode = ParseOperationCode(Parameters);
            var            requestPacket = new RequestPacket(operationCode, Parameters);

            FirstHandler?.Handle(requestPacket);
        }
Example #2
0
        protected override void OnResponse(byte OperationCode, short ReturnCode, string DebugMessage, Dictionary <byte, object> Parameters)
        {
            OperationCodes operationCode  = ParseOperationCode(Parameters);
            var            responsePacket = new ResponsePacket(operationCode, Parameters);

            FirstHandler?.Handle(responsePacket);
        }
Example #3
0
        protected override void OnEvent(byte Code, Dictionary <byte, object> Parameters)
        {
            if (Code == 2)
            {
                Parameters.Add(252, (short)EventCodes.Move);
            }

            EventCodes eventCode   = ParseEventCode(Parameters);
            var        eventPacket = new EventPacket(eventCode, Parameters);

            FirstHandler?.Handle(eventPacket);
        }
Example #4
0
        public void AbortingMessageHandlingReallyAbortsMessageHandling()
        {
            var sender = CreateBus(SenderInputQueueName, new HandlerActivatorForTesting()).Start(1);

            var handlerBeforeAbort = new FirstHandler();
            var handlerAfterAbort  = new SecondHandler();

            CreateBus(ReceiverInputQueueName, new HandlerActivatorForTesting()
                      .UseHandler(handlerAfterAbort)
                      .UseHandler(handlerBeforeAbort)).Start(1);

            pipelineInspector.SetOrder(typeof(FirstHandler), typeof(SecondHandler));

            sender.Routing.Send(ReceiverInputQueueName, "wooooolalalalalaal");

            Thread.Sleep(500);

            handlerBeforeAbort.WasExecuted.ShouldBe(true);
            handlerAfterAbort.WasExecuted.ShouldBe(false);
        }
Example #5
0
        public void Main()
        {
            /***
             * 这里是为了简单方便,才这样使用的。
             * 总的处理流程需要根据实际需要进行变化,
             * 可能单独一项业务需要指定的处理流程。
             * 例如:
             *     处理A业务,处理流程为:FirstHandler --》ThreeHandler
             *     处理B业务,处理流程为:SecondHandler --》ThreeHandler
             *     。。。。。。。。。。。
             * 这个时候,建议为每一个业务(A/B/C/D......)设置一个方法或者类
             */
            IHandler handler1 = new FirstHandler();
            IHandler handler2 = new SecondHandler();
            IHandler handler3 = new ThreeHandler();

            handler1.SetNextHandler(handler2);
            handler2.SetNextHandler(handler3);

            for (int i = 0; i < 5; i++)
            {
                handler1.Handle();
            }
        }