public void Test()
        {
            // 生成操作对象实例
            IHandler handler1 = new InternalHandler();
            IHandler handler2 = new DiscountHandler();
            IHandler handler3 = new MailHandler();
            IHandler handler4 = new RegularHandler();

            // 组装链式的结构  internal-> mail-> discount-> regular-> null
            handler1.Successor = handler3;
            handler3.Successor = handler2;
            handler2.Successor = handler4;
            IHandler head = handler1;

            Request request = new Request(20, PurchaseType.Mail);

            head.HandleRequest(request);
            Assert.AreEqual <double>(20 * 1.3, request.Price);

            // 重新组织链表结构
            handler1.Successor = handler1.Successor.Successor;  // 短路掉Discount
            request            = new Request(20, PurchaseType.Discount);
            head.HandleRequest(new Request(20, PurchaseType.Discount));
            Assert.AreEqual <double>(20, request.Price);    // 确认被短路的部分无法生效
        }
Exemplo n.º 2
0
 private void RemoveHandler(InternalHandler handler)
 {
     Handlers.Remove(handler);
     if (Handlers.Count < 2)
     {
         RegisterEvent();
     }
 }
Exemplo n.º 3
0
 private void AddHandler(InternalHandler handler)
 {
     Handlers.Add(handler);
     if (Handlers.Count <= 2)
     {
         RegisterEvent();
     }
 }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            // internal call
            // the pipeline (delegate) dumps its data to a an "event handler" DelegateMethod
            InternalHandler delInternal = new InternalHandler(DelegateMethod);

            delInternal(2);

            // external call
            DelegateTest delExternal = new DelegateTest();

            DelegateTest.ExternalHandler externalHandler = DelegateMethod;
            delExternal.MyHelperMethod(externalHandler);
        }
Exemplo n.º 5
0
        public void Register(string @event, Action action, int filterId)
        {
            var handler = Handlers.FirstOrDefault(x => x.Identifier == @event);

            if (handler != null)
            {
                handler.ActionsByType.Add(filterId, action);
            }
            else
            {
                handler = new InternalHandler(@event);
                handler.ActionsByType.Add(filterId, action);
                AddHandler(handler);
            }
        }
Exemplo n.º 6
0
        public void Test()
        {
            Trace.WriteLine("Process via whole CoR");
            // 生成并组装链式的结构  internal-> discount-> mail-> regular-> null
            var head = new InternalHandler()
            {
                Successor = new DiscountHandler()
                {
                    Successor = new MailHandler()
                    {
                        Successor = new RegularHandler()
                    }
                }
            };

            var request = new Request()
            {
                Price = 20, Type = PurchaseType.Mail
            };

            head.HandleRequest(request);
            Assert.AreEqual <double>(20 * 1.3, request.Price);
            request = new Request()
            {
                Price = 20, Type = PurchaseType.Discount
            };
            head.HandleRequest(request);
            Assert.AreEqual <double>(20 * 0.9, request.Price);

            Trace.WriteLine("\n\nProcess via rearranged CoR");
            //  重新组织链表结构, 新链表为internal-> mail-> regular-> null
            //  此时,head指向internal
            var discountHandler = head.Successor;

            head.Successor  = head.Successor.Successor; // 短路掉Discount Handler
            discountHandler = null;
            request         = new Request()
            {
                Price = 20, Type = PurchaseType.Discount
            };
            head.HandleRequest(request);

            // 价格没有折扣打折,确认被短路的部分无法生效
            //  验证CoR可以通过动态维护链表调整处理对象(Handler)的组织结构
            Assert.AreEqual <double>(20, request.Price);
        }
Exemplo n.º 7
0
        public void Test()
        {
            // 生成操作对象实例
            IHandler handler1 = new InternalHandler();
            IHandler handler2 = new DiscountHandler();
            IHandler handler3 = new MailHandler();
            IHandler handler4 = new RegularHandler();

            //// 组装链式的结构  internal-> mail-> discount-> regular-> null
            handler1.AddSuccessor(handler2);
            handler2.AddSuccessor(handler3);
            handler2.AddSuccessor(handler4);
            IHandler head = handler1;

            Request request = new Request(20, PurchaseType.Mail);

            head.HandleRequest(request);
            Assert.AreEqual <double>(20 * 1.3, request.Price);
        }
Exemplo n.º 8
0
        public void Test()
        {
            var head = new InternalHandler
            {
                Successor = new DiscountHandler
                {
                    Successor = new MailHandler
                    {
                        Successor = new RegularHandler()
                    }
                }
            };

            var request = new Request
            {
                Price = 20, Type = PurchaseType.Mail
            };

            head.HandleRequest(request);
            Assert.AreEqual(20 * 1.3, request.Price);

            request = null;

            //重新组织链表结构
            //此时,head指向internal
            var discountHandler = head.Successor;

            //短路掉Discount Handler
            head.Successor = head.Successor.Successor;

            discountHandler = null;

            request = new Request
            {
                Price = 20, Type = PurchaseType.Discount
            };
            head.HandleRequest(request);

            //价格没有折扣打折,确认被短路的部分无法生效
            //验证CoR可以通过动态维护链表调整操作对象(Handler)的组织结构
            Assert.AreEqual(20, request.Price);
        }
        public void Test()
        {
            Trace.WriteLine("Process via whole CoR");
            // 生成并组装链式的结构 internal->discount->mail->regular->null
            var head = new InternalHandler()
            {
                Successor = new DiscountHandler()
                {
                    Successor = new MailHandler()
                    {
                        Successor = new RegularHandler()
                    }
                }
            };

            var request = new Request {
                Price = 20, Type = PurchaseType.Mail
            };

            head.HandleRequest(request);
            Assert.AreEqual <double>(20 * 1.3, request.Price);
            request = new Request()
            {
                Price = 20, Type = PurchaseType.Discount
            };
            head.HandleRequest(request);
            Assert.AreEqual <double>(20 * 0.9, request.Price);

            Trace.WriteLine("\n\nProcess via rearranged CoR");
            var discountHandler = head.Successor;

            head.Successor  = head.Successor.Successor;
            discountHandler = null;
            request         = new Request()
            {
                Price = 20, Type = PurchaseType.Discount
            };
            head.HandleRequest(request);

            Assert.AreEqual <double>(20, request.Price);
        }
Exemplo n.º 10
0
        static void Main(string[] args)
        {
            IHandler handler1 = new InternalHandler();
            IHandler handler2 = new DiscountHandler();
            IHandler handler3 = new MailHandler();
            IHandler handler4 = new RegularHandler();

            handler1.Next = handler3;
            handler3.Next = handler2;
            handler2.Next = handler4;

            IHandler head    = handler1;
            Request  request = new Request(20, PurchaseType.Mail);

            head.HandleRequest(request);
            Console.Write(request.Price); //26

            //将MailHandler短路
            handler1.Next = handler1.Next.Next;
            request       = new Request(20, PurchaseType.Mail);
            head.HandleRequest(request);
            Console.Write(request.Price); //20
        }
Exemplo n.º 11
0
        /// <summary>
        /// 处理内部消息
        /// </summary>
        /// <param name="Param"></param>
        public static void ExecuteInternalInfo(PacketDecodeCompletedEventArgs Event, SocketMiddleData Param)
        {
            switch (Param.SendType)
            {
            case SendTypeEnum.Init:
                InitHandler.ExecuteSocketApiJson(Param.MiddleResult);
                break;

            case SendTypeEnum.InternalInfo:
                InternalHandler.ExecuteSocketIniternalInfo(Param, PacketCache);
                break;

            case SendTypeEnum.RequestInfo:
                RequestHandler.ExecuteSocketRequest(Event, Param);
                break;

            case SendTypeEnum.CallBack:
                CallHandler.ExecuteSocketCallBack(PacketCache.Values.ToList(), Param);
                break;

            default:
                break;
            }
        }
        public void Test()
        {
            // 生成操作对象实例、组装链式结构
            IHandler handler1 = new InternalHandler();
            IHandler handler2 = new DiscountHandler();
            IHandler handler3 = new MailHandler();
            IHandler handler4 = new RegularHandler();

            handler1.Successor = handler3;
            handler3.Successor = handler2;
            handler2.Successor = handler4;
            IHandler head = handler1;

            handler1.HasBreakPoint = true;
            handler1.Break        += this.Break;
            handler3.HasBreakPoint = true;
            handler3.Break        += this.Break;

            Request request = new Request(20, PurchaseType.Regular);

            head.HandleRequest(request);
            currentType = PurchaseType.Internal;    // 为第一个断点做的准备
            Assert.AreEqual <double>(20, request.Price);
        }
Exemplo n.º 13
0
 internal static extern IntPtr MakeCallResult(int callbackID, CallResultFlags flags, ulong apiCallHandle, int size, InternalHandler handler);
        private async void RetrieveData()
        {
            try
            {
                internalhandler = new InternalHandler();
                RAM.Text        = internalhandler.RAM;
                Build.Text      = internalhandler.FirmwareBuild;
            }
            catch
            {
            }

            try
            {
                modemhandler = await ModemHandler.LoadHandlerAsync();

                PhoneListView.ItemsSource = modemhandler.ModemInformation;
            }
            catch
            {
            }

            try
            {
                reghandler         = new RegistryHandler();
                OEM.Text           = reghandler.ProductCode;
                MO.Text            = reghandler.MobileOperator;
                SP.Text            = reghandler.ServiceProvider;
                CSV.Text           = reghandler.SOC;
                TitleBlock.Text    = reghandler.Manufacturer + " " + reghandler.ModelName;
                SubtitleBlock.Text = reghandler.ProductCodeCleaned;

                if (reghandler.ReleaseName != null)
                {
                    VersionNameText.Text = VersionNameText.Text.Replace("XXXX", reghandler.ReleaseName);
                }
            }
            catch
            {
            }

            try
            {
                dpphandler = await DPPHandler.LoadHandlerAsync();

                IMEI.Text = dpphandler.IMEI;
                ManufactureCountry.Text = dpphandler.COO;
                RegulatoryImage.Source  = IsDarkTheme ? dpphandler.RegulatoryBlack : dpphandler.RegulatoryWhite;

                foreach (string Line in dpphandler.Product.Split('\n'))
                {
                    if (Line.StartsWith("HWID"))
                    {
                        HR.Text = string.Join(".", Line.Split(":").Last().ToCharArray());
                    }
                    else if (Line.StartsWith("CTR"))
                    {
                        PC.Text = Line.Split(":").Last();
                    }
                }
            }
            catch
            {
                await new NotEnoughRights().ShowAsync();
            }

            StorageFolder local = ApplicationData.Current.LocalFolder;
            var           retrivedProperties = await local.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });

            var freeSpace = (UInt64)retrivedProperties["System.FreeSpace"];

            retrivedProperties = await local.Properties.RetrievePropertiesAsync(new string[] { "System.Capacity" });

            var totalSpace = (UInt64)retrivedProperties["System.Capacity"];

            var usedSpace = totalSpace - freeSpace;

            InternalStorageUsage.Maximum = totalSpace;
            InternalStorageUsage.Value   = usedSpace;

            UsageDesc.Text = FormatBytes(freeSpace) + " free out of " + FormatBytes(totalSpace);
        }
        public void handle(Command command, StreamWriter writer, StreamReader reader, NetworkStream stream)
        {
            InternalHandler handler = new InternalHandler(command, writer, reader, stream);

            handler.run();
        }