Exemplo n.º 1
0
        public Task <IObjectState> LogInAsync(string username,
                                              string password,
                                              CancellationToken cancellationToken)
        {
            var data = new Dictionary <string, object>
            {
                { "username", username },
                { "password", password }
            };

            var command = new ParseCommand(string.Format("login?{0}", ParseClient.BuildQueryString(data)),
                                           method: "GET",
                                           data: null);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken)
                   .ContinueWith(result =>
            {
                var serverState = ParseObjectCoder.Decode(result.Result.Item2, ParseDecoder.Instance);
                serverState = serverState.MutatedClone(mutableClone =>
                {
                    mutableClone.IsNew = result.Result.Item1 == System.Net.HttpStatusCode.Created;
                });
                return serverState;
            }, TaskContinuationOptions.OnlyOnRanToCompletion));
        }
Exemplo n.º 2
0
        public Task <IObjectState> SaveAsync(IObjectState state,
                                             IDictionary <string, IParseFieldOperation> operations,
                                             string sessionToken,
                                             CancellationToken cancellationToken)
        {
            var objectJson = ParseObject.ToJsonObjectForSaving(operations);

            var command = new ParseCommand(
                (state.ObjectId == null
                    ? string.Format("classes/{0}", Uri.EscapeDataString(state.ClassName))
                    : string.Format("classes/{0}/{1}", Uri.EscapeDataString(state.ClassName), state.ObjectId)),
                method: (state.ObjectId == null ? "POST" : "PUT"),
                sessionToken: sessionToken,
                data: objectJson);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t =>
            {
                var serverState = ParseObjectCoder.Decode(t.Result.Item2, ParseDecoder.Instance);
                serverState = serverState.MutatedClone(mutableClone =>
                {
                    mutableClone.IsNew = t.Result.Item1 == System.Net.HttpStatusCode.Created;
                });
                return serverState;
            }));
        }
Exemplo n.º 3
0
        public Task TestRunCommandWithErrorCode()
        {
            var mockHttpClient = new Mock <IHttpClient>();
            var mockInstallationIdController = new Mock <IInstallationIdController>();
            var fakeResponse = Task.FromResult(new Tuple <HttpStatusCode, string>(HttpStatusCode.NotFound, "{ \"code\": 101, \"error\": \"Object not found.\" }"));

            mockHttpClient.Setup(obj => obj.ExecuteAsync(It.IsAny <HttpRequest>(),
                                                         It.IsAny <IProgress <ParseUploadProgressEventArgs> >(),
                                                         It.IsAny <IProgress <ParseDownloadProgressEventArgs> >(),
                                                         It.IsAny <CancellationToken>())).Returns(fakeResponse);

            mockInstallationIdController.Setup(i => i.GetAsync()).Returns(Task.FromResult <Guid?>(null));

            ParseCommandRunner commandRunner = new ParseCommandRunner(mockHttpClient.Object, mockInstallationIdController.Object);
            var command = new ParseCommand("endpoint", method: "GET", data: null);

            return(commandRunner.RunCommandAsync(command).ContinueWith(t =>
            {
                Assert.IsTrue(t.IsFaulted);
                Assert.IsFalse(t.IsCanceled);
                Assert.IsInstanceOfType(t.Exception.InnerException, typeof(ParseException));
                var parseException = t.Exception.InnerException as ParseException;
                Assert.AreEqual(ParseException.ErrorCode.ObjectNotFound, parseException.Code);
                Assert.AreEqual("Object not found.", parseException.Message);
            }));
        }
Exemplo n.º 4
0
        public Task TestRunCommandWithArrayResult()
        {
            var mockHttpClient = new Mock <IHttpClient>();
            var mockInstallationIdController = new Mock <IInstallationIdController>();
            var fakeResponse = Task.FromResult(new Tuple <HttpStatusCode, string>(HttpStatusCode.OK, "[]"));

            mockHttpClient.Setup(obj => obj.ExecuteAsync(It.IsAny <HttpRequest>(),
                                                         It.IsAny <IProgress <ParseUploadProgressEventArgs> >(),
                                                         It.IsAny <IProgress <ParseDownloadProgressEventArgs> >(),
                                                         It.IsAny <CancellationToken>())).Returns(fakeResponse);

            mockInstallationIdController.Setup(i => i.GetAsync()).Returns(Task.FromResult <Guid?>(null));

            ParseCommandRunner commandRunner = new ParseCommandRunner(mockHttpClient.Object, mockInstallationIdController.Object);
            var command = new ParseCommand("endpoint", method: "GET", data: null);

            return(commandRunner.RunCommandAsync(command).ContinueWith(t =>
            {
                Assert.IsFalse(t.IsFaulted);
                Assert.IsFalse(t.IsCanceled);
                Assert.IsInstanceOfType(t.Result.Item2, typeof(IDictionary <string, object>));
                Assert.AreEqual(1, t.Result.Item2.Count);
                Assert.IsTrue(t.Result.Item2.ContainsKey("results"));
                Assert.IsInstanceOfType(t.Result.Item2["results"], typeof(IList <object>));
            }));
        }
Exemplo n.º 5
0
        public void Compute(string commandLine)
        {
            var reciever = new ParseCommand();

            //Add all the command
            CommandList.Add(reciever.Action(commandLine));
        }
Exemplo n.º 6
0
        public Task <IObjectState> LogInAsync(string authType,
                                              IDictionary <string, object> data,
                                              CancellationToken cancellationToken)
        {
            var authData = new Dictionary <string, object>();

            authData[authType] = data;

            var command = new ParseCommand("users",
                                           method: "POST",
                                           data: new Dictionary <string, object>
            {
                { "authData", authData }
            });

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t =>
            {
                var serverState = ParseObjectCoder.Decode(t.Result.Item2, ParseDecoder.Instance);
                serverState = serverState.MutatedClone(mutableClone =>
                {
                    mutableClone.IsNew = t.Result.Item1 == System.Net.HttpStatusCode.Created;
                });
                return serverState;
            }));
        }
Exemplo n.º 7
0
        protected override void Handle()
        {
            List <string> commands;

            if (AppState.CurrentCommand.Parameters.ContainsKey("_0"))
            {
                commands = GetCommands(AppState.CurrentCommand.Parameters["_0"]);
            }
            else
            {
                commands = new List <string> {
                    "Help"
                };
            }

            if (commands.Count == 0)
            {
                AppState.CurrentOutput = new CommandOutput("Couldn't find that command.", false);
                return;
            }

            if (commands.Count > 1)
            {
                AppState.CurrentOutput = new CommandOutput($"Please specify which command you'd like to get help on: {string.Join(" ", commands)}", false);
                return;
            }

            var commandObject = ParseCommand.GetCommandObject(AppState, AppState.AvailableCommands[commands[0]]);

            AppState.CurrentOutput = new CommandOutput(GetHelpText(commands[0], commandObject));
        }
Exemplo n.º 8
0
        public void TestMakeCommand()
        {
            ParseCommand command = new ParseCommand("endpoint", method: "GET", sessionToken: "abcd", headers: null, data: null);

            Assert.AreEqual("/1/endpoint", command.Uri.AbsolutePath);
            Assert.AreEqual("GET", command.Method);
            Assert.IsTrue(command.Headers.Any(pair => pair.Key == "X-Parse-Session-Token" && pair.Value == "abcd"));
        }
        public Task RevokeAsync(string sessionToken, CancellationToken cancellationToken)
        {
            var command = new ParseCommand("logout",
                                           method: "POST",
                                           sessionToken: sessionToken,
                                           data: new Dictionary <string, object>());

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken));
        }
Exemplo n.º 10
0
        public Task <IObjectState> GetUserAsync(string sessionToken, CancellationToken cancellationToken)
        {
            var command = new ParseCommand("users/me",
                                           method: "GET",
                                           sessionToken: sessionToken,
                                           data: null);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken)
                   .OnSuccess(t => ParseObjectCoder.Decode(t.Result.Item2, ParseDecoder.Instance)));
        }
Exemplo n.º 11
0
        public Task SendPushNotificationAsync(IPushState state, CancellationToken cancellationToken)
        {
            return(currentUserController.GetCurrentSessionTokenAsync(cancellationToken).OnSuccess(sessionTokenTask => {
                var command = new ParseCommand("push",
                                               method: "POST",
                                               sessionToken: sessionTokenTask.Result,
                                               data: ParsePushEncoder.Instance.Encode(state));

                return commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken);
            }).Unwrap());
        }
        public Task <IObjectState> UpgradeToRevocableSessionAsync(string sessionToken,
                                                                  CancellationToken cancellationToken)
        {
            var command = new ParseCommand("upgradeToRevocableSession",
                                           method: "POST",
                                           sessionToken: sessionToken,
                                           data: new Dictionary <string, object>());

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken)
                   .OnSuccess(t => ParseObjectCoder.Decode(t.Result.Item2, ParseDecoder.Instance)));
        }
Exemplo n.º 13
0
        public Task RequestPasswordResetAsync(string email, CancellationToken cancellationToken)
        {
            var command = new ParseCommand("requestPasswordReset",
                                           method: "POST",
                                           data: new Dictionary <string, object>
            {
                { "email", email }
            });

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken));
        }
Exemplo n.º 14
0
        public Task DeleteAsync(IObjectState state,
                                string sessionToken,
                                CancellationToken cancellationToken)
        {
            var command = new ParseCommand(string.Format("classes/{0}/{1}",
                                                         state.ClassName, state.ObjectId),
                                           method: "DELETE",
                                           sessionToken: sessionToken,
                                           data: null);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken));
        }
Exemplo n.º 15
0
 private static int Main(string[] args)
 {
     Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
     Logger.Initialize();
     return(Parser.Default.ParseArguments <GenerateCommand, ParseCommand, CleanCommand, LanguageCommand>(args)
            .MapResult(
                (GenerateCommand opts) => GenerateCommand.Handle(opts),
                (ParseCommand opts) => ParseCommand.Handle(opts),
                (CleanCommand opts) => CleanCommand.Handle(opts),
                (LanguageCommand opts) => LanguageCommand.Handle(opts),
                (DocumentationCommand opts) => DocumentationCommand.Handle(opts),
                errs => 1));
 }
        public Task <FileState> SaveAsync(FileState state,
                                          Stream dataStream,
                                          string sessionToken,
                                          IProgress <ParseUploadProgressEventArgs> progress,
                                          CancellationToken cancellationToken = default(CancellationToken))
        {
            if (state.Url != null)
            {
                // !isDirty
                return(Task.FromResult(state));
            }

            if (cancellationToken.IsCancellationRequested)
            {
                var tcs = new TaskCompletionSource <FileState>();
                tcs.TrySetCanceled();
                return(tcs.Task);
            }

            var oldPosition = dataStream.Position;
            var command     = new ParseCommand("files/" + state.Name,
                                               method: "POST",
                                               sessionToken: sessionToken,
                                               contentType: state.MimeType,
                                               stream: dataStream);

            return(_commandRunner.RunCommandAsync(command,
                                                  uploadProgress: progress,
                                                  cancellationToken: cancellationToken).OnSuccess(uploadTask =>
            {
                var result = uploadTask.Result;
                var jsonData = result.Item2;
                cancellationToken.ThrowIfCancellationRequested();

                return new FileState
                {
                    Name = jsonData["name"] as string,
                    Url = new Uri(jsonData["url"] as string, UriKind.Absolute),
                    MimeType = state.MimeType
                };
            }).ContinueWith(t =>
            {
                // Rewind the stream on failure or cancellation (if possible)
                if ((t.IsFaulted || t.IsCanceled) && dataStream.CanSeek)
                {
                    dataStream.Seek(oldPosition, SeekOrigin.Begin);
                }

                return t;
            }, cancellationToken).Unwrap());
        }
Exemplo n.º 17
0
        public void RegularInputErtapenem_Deserialize_Success()
        {
            // Arrange
            string       jsonInput = TestConstants.Ertapenem;
            ParseCommand command   = new ParseCommand("test");

            // Act
            var result = command.Deserialize(jsonInput);

            // Assert
            Assert.Equal(1, result.Drugs.Count);
            Assert.Equal("ertapenem", result.Drugs.AsQueryable().FirstOrDefault().Name);
            Assert.Equal(2, result.Drugs.AsQueryable().FirstOrDefault().IndicationsDose.IndicationAndDoseGroups.Count());
        }
Exemplo n.º 18
0
        public Task <IObjectState> FetchAsync(IObjectState state,
                                              string sessionToken,
                                              CancellationToken cancellationToken)
        {
            var command = new ParseCommand(string.Format("classes/{0}/{1}",
                                                         Uri.EscapeDataString(state.ClassName),
                                                         Uri.EscapeDataString(state.ObjectId)),
                                           method: "GET",
                                           sessionToken: sessionToken,
                                           data: null);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken)
                   .OnSuccess(t => ParseObjectCoder.Decode(t.Result.Item2, ParseDecoder.Instance)));
        }
Exemplo n.º 19
0
    public static void Main()
    {
        NationsBuilder nationsBuilder = new NationsBuilder();

        while (true)
        {
            List <string> input = new List <string>(Console.ReadLine().Split().ToList());
            ParseCommand.ExecuteCommand(input, nationsBuilder);
            if (input[0] == "Quit")
            {
                break;
            }
        }
    }
Exemplo n.º 20
0
        private Task <IDictionary <string, object> > FindAsync(string className,
                                                               IDictionary <string, object> parameters,
                                                               string sessionToken,
                                                               CancellationToken cancellationToken)
        {
            var command = new ParseCommand(string.Format("classes/{0}?{1}",
                                                         Uri.EscapeDataString(className),
                                                         ParseClient.BuildQueryString(parameters)),
                                           method: "GET",
                                           sessionToken: sessionToken,
                                           data: null);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken)
                   .OnSuccess(t => t.Result.Item2));
        }
Exemplo n.º 21
0
        public void DrugFileForParsing_Deserialize_Success()
        {
            // Arrange
            string       jsonInput = TestConstants.DrugFileForParsing;
            ParseCommand command   = new ParseCommand("test");

            // Act
            var result = command.Deserialize(jsonInput);

            // Assert
            Assert.Equal(3, result.Drugs.Count);
            Assert.Single(result.Drugs[0].IndicationsDose.IndicationAndDoseGroups);
            Assert.Single(result.Drugs[1].IndicationsDose.IndicationAndDoseGroups);
            Assert.Single(result.Drugs[2].IndicationsDose.IndicationAndDoseGroups);
        }
Exemplo n.º 22
0
        public Task <IObjectState> SignUpAsync(IObjectState state,
                                               IDictionary <string, IParseFieldOperation> operations,
                                               CancellationToken cancellationToken)
        {
            var objectJson = ParseObject.ToJsonObjectForSaving(operations);

            var command = new ParseCommand("classes/_User",
                                           method: "POST",
                                           data: objectJson);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t =>
            {
                var serverState = ParseObjectCoder.Decode(t.Result.Item2, ParseDecoder.Instance);
                serverState = serverState.MutatedClone(mutableClone => { mutableClone.IsNew = true; });
                return serverState;
            }));
        }
        public Task <ParseConfig> FetchConfigAsync(string sessionToken, CancellationToken cancellationToken)
        {
            var command = new ParseCommand("config",
                                           method: "GET",
                                           sessionToken: sessionToken,
                                           data: null);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(task =>
            {
                cancellationToken.ThrowIfCancellationRequested();
                return new ParseConfig(task.Result.Item2);
            }).OnSuccess(task =>
            {
                cancellationToken.ThrowIfCancellationRequested();
                CurrentConfigController.SetCurrentConfigAsync(task.Result);
                return task;
            }).Unwrap());
        }
        public Task <T> CallFunctionAsync <T>(string name,
                                              IDictionary <string, object> parameters,
                                              string sessionToken,
                                              CancellationToken cancellationToken)
        {
            var command = new ParseCommand(string.Format("functions/{0}", Uri.EscapeUriString(name)),
                                           method: "POST",
                                           sessionToken: sessionToken,
                                           data: NoObjectsEncoder.Instance.Encode(parameters) as IDictionary <string, object>);

            return(_commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).ContinueWith(t =>
            {
                var decoded = ParseDecoder.Instance.Decode(t.Result.Item2) as IDictionary <string, object>;
                return decoded != null && !decoded.ContainsKey("result")
                    ? default(T)
                    : Conversion.To <T>(decoded["result"]);
            }, TaskContinuationOptions.OnlyOnRanToCompletion));
        }
        public Task TrackAppOpenedAsync(string pushHash,
                                        string sessionToken,
                                        CancellationToken cancellationToken)
        {
            IDictionary <string, object> data = new Dictionary <string, object> {
                { "at", DateTime.Now }
            };

            if (pushHash != null)
            {
                data["push_hash"] = pushHash;
            }

            var command = new ParseCommand("events/AppOpened",
                                           method: "POST",
                                           sessionToken: sessionToken,
                                           data: PointerOrLocalIdEncoder.Instance.Encode(data) as IDictionary <string, object>);

            return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken));
        }
        public Task TestRunCommand()
        {
            var mockHttpClient = new Mock <IHttpClient>();
            var fakeResponse   = Task <Tuple <HttpStatusCode, string> > .FromResult(new Tuple <HttpStatusCode, string>(HttpStatusCode.OK, "{}"));

            mockHttpClient.Setup(obj => obj.ExecuteAsync(It.IsAny <HttpRequest>(),
                                                         It.IsAny <IProgress <ParseUploadProgressEventArgs> >(),
                                                         It.IsAny <IProgress <ParseDownloadProgressEventArgs> >(),
                                                         It.IsAny <CancellationToken>())).Returns(fakeResponse);

            ParseCommandRunner commandRunner = new ParseCommandRunner(mockHttpClient.Object);
            var command = new ParseCommand("endpoint", method: "GET", data: null);

            return(commandRunner.RunCommandAsync(command).ContinueWith(t => {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                Assert.IsInstanceOf(typeof(IDictionary <string, object>), t.Result.Item2);
                Assert.AreEqual(0, t.Result.Item2.Count);
            }));
        }
        public Task TestRunCommandWithInvalidString()
        {
            var mockHttpClient = new Mock <IHttpClient>();
            var fakeResponse   = Task <Tuple <HttpStatusCode, string> > .FromResult(new Tuple <HttpStatusCode, string>(HttpStatusCode.OK, "invalid"));

            mockHttpClient.Setup(obj => obj.ExecuteAsync(It.IsAny <HttpRequest>(),
                                                         It.IsAny <IProgress <ParseUploadProgressEventArgs> >(),
                                                         It.IsAny <IProgress <ParseDownloadProgressEventArgs> >(),
                                                         It.IsAny <CancellationToken>())).Returns(fakeResponse);

            ParseCommandRunner commandRunner = new ParseCommandRunner(mockHttpClient.Object);
            var command = new ParseCommand("endpoint", method: "GET", data: null);

            return(commandRunner.RunCommandAsync(command).ContinueWith(t => {
                Assert.True(t.IsFaulted);
                Assert.False(t.IsCanceled);
                Assert.IsInstanceOf <ParseException>(t.Exception.InnerException);
                var parseException = t.Exception.InnerException as ParseException;
                Assert.AreEqual(ParseException.ErrorCode.OtherCause, parseException.Code);
            }));
        }
        public IStatement[] Parse(string payload, ScriptKind scriptKind)
        {
            var command = new ParseCommand()
            {
                Payload    = payload,
                ScriptKind = scriptKind
            };

            var response = this.ExecuteCommand(command);

            var result = JsonConvert.DeserializeObject <ParseCommandResult>(response);

            List <IStatement> ast = JsonConvert.DeserializeObject <List <IStatement> >(result.AstPayload, new JsonSerializerSettings
            {
                TypeNameHandling         = TypeNameHandling.Auto,
                NullValueHandling        = NullValueHandling.Ignore,
                MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead
            });

            return(ast.ToArray());
        }
        public Task TrackEventAsync(string name,
                                    IDictionary <string, string> dimensions,
                                    string sessionToken,
                                    CancellationToken cancellationToken)
        {
            IDictionary <string, object> data = new Dictionary <string, object> {
                { "at", DateTime.Now },
                { "name", name },
            };

            if (dimensions != null)
            {
                data["dimensions"] = dimensions;
            }

            var command = new ParseCommand("events/" + name,
                                           method: "POST",
                                           sessionToken: sessionToken,
                                           data: PointerOrLocalIdEncoder.Instance.Encode(data) as IDictionary <string, object>);

            return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken));
        }
Exemplo n.º 30
0
        static void Main(string[] args)
        {
            // 实例化创建消息命令类的对象。
            CreateCommand ca1 = new CreateCommand();
            CreateCommand ca2 = new CreateCommand();
            CreateCommand ca3 = new CreateCommand(MessageType.Command, 0x00000001);
            CreateCommand ca4 = new CreateCommand(MessageType.CommandACK);
            CreateCommand ca5 = new CreateCommand(MessageType.CommandResult, 0x00000001);

            // 采用 DES 密钥加密。
            DESHelper des = new DESHelper();

            byte[]        desKey = des.GetSecretKey();
            CreateCommand ca6    = new CreateCommand(MessageType.Event, desKey, 0x00000001);
            CreateCommand ca7    = new CreateCommand(MessageType.EventACK);

            // 获取数据报文字节数组。
            byte[] cmd1 = new byte[] { ca1.GetHeartbeatDataCommand() };
            byte[] cmd2 = new byte[] { ca2.GetHeartbeatResponseCommand() };
            byte[] cmd3 = ca3.GetRequestCommand(MessageId.RealTimeControlLuminaire, ParameterType.Brightness, "100");
            byte[] cmd4 = ca4.GetResponseCommand(0x0);
            byte[] cmd5 = ca5.GetResultCommand(0x0, MessageId.RealTimeControlLuminaire, ErrorCode.Succeed, "成功");
            byte[] cmd6 = ca6.GetEventCommand(MessageId.DataCollection, new List <Parameter> {
                new Parameter(ParameterType.DeviceCategory, "02"), new Parameter(ParameterType.DeviceType, "01"), new Parameter(ParameterType.SerialNumber, 0x00000001), new Parameter(ParameterType.LuminaireId, "00000001".ToByteArray(true))
            });
            byte[] cmd7 = ca7.GetEventResponseCommand(0x01);

            // 将字节数组转成十六进制字符串形式并打印。
            Console.WriteLine("一、生成命令\n1、心跳包数据\n" + cmd1.ToHexString()
                              + "\n\n2、心跳包响应\n" + cmd2.ToHexString()
                              + "\n\n3、请求命令\n" + cmd3.ToHexString()
                              + "\n\n4、响应命令\n" + cmd4.ToHexString()
                              + "\n\n5、结果命令\n" + cmd5.ToHexString()
                              + "\n\n6、事件命令\n" + cmd6.ToHexString()
                              + "\n\n7、事件响应\n" + cmd7.ToHexString());

            // 订阅消息报文处理事件。
            ParseCommand pa1 = new ParseCommand(cmd1);
            ParseCommand pa2 = new ParseCommand(cmd2);
            ParseCommand pa3 = new ParseCommand(cmd3);
            ParseCommand pa4 = new ParseCommand(cmd4);
            ParseCommand pa5 = new ParseCommand(cmd5);

            // 采用 DES 密钥解密。
            ParseCommand pa6 = new ParseCommand(cmd6, desKey);
            ParseCommand pa7 = new ParseCommand(cmd7);

            pa1.DatagramProcess += Oa_DatagramProcess;
            pa2.DatagramProcess += Oa_DatagramProcess;
            pa3.DatagramProcess += Oa_DatagramProcess;
            pa4.DatagramProcess += Oa_DatagramProcess;
            pa5.DatagramProcess += Oa_DatagramProcess;
            pa6.DatagramProcess += Oa_DatagramProcess;
            pa7.DatagramProcess += Oa_DatagramProcess;

            // 触发消息报文处理事件。
            Console.WriteLine("\n\n二、解析命令\n1、心跳包数据");
            pa1.OnDatagramProcess();
            Console.WriteLine("\n2、心跳包响应");
            pa2.OnDatagramProcess();
            Console.WriteLine("\n3、请求命令");
            pa3.OnDatagramProcess();
            Console.WriteLine("\n4、响应命令");
            pa4.OnDatagramProcess();
            Console.WriteLine("\n5、结果命令");
            pa5.OnDatagramProcess();
            Console.WriteLine("\n6、事件命令");
            pa6.OnDatagramProcess();
            Console.WriteLine("\n7、事件响应");
            pa7.OnDatagramProcess();

            // 等待用户按键退出。
            Console.ReadKey();
        }