コード例 #1
0
        private void ParseJSONCommand(string commandText)
        {
            ValidatorGateCommand gateCmd;

            if (ValidatorGateCommand.TryParse(commandText, out gateCmd))
            {
                gateCmd.Execute();
                return;
            }

            TicketForwardingCommand ticketCmd;

            if (TicketForwardingCommand.TryParse(commandText, out ticketCmd))
            {
                ticketCmd.Execute();
            }

            ValidatorMessageCommand messageCommand;

            if (ValidatorMessageCommand.TryParse(commandText, out messageCommand))
            {
                messageCommand.Execute();
            }
        }
コード例 #2
0
        private void ParseCommand(HttpListenerRequest request)
        {
            var available = true;

            var entryScannble = true;
            var entryable     = true;
            var exitScannable = true;
            var exitable      = true;

            try
            {
                var queryStrs = request.QueryString;
                foreach (var key in queryStrs.AllKeys)
                {
                    // _log.Info(string.Format("key: {0} value:{1}", key, queryStrs[key]));

                    var lowerCase = key.ToLowerInvariant();
                    switch (lowerCase)
                    {
                    case "available":
                        available = bool.Parse(queryStrs[key]);
                        break;

                    case "entry":
                        entryable = bool.Parse(queryStrs[key]);
                        break;

                    case "entryscan":
                        entryScannble = bool.Parse(queryStrs[key]);
                        break;

                    case "exit":
                        exitable = bool.Parse(queryStrs[key]);
                        break;

                    case "exitscan":
                        exitScannable = bool.Parse(queryStrs[key]);
                        break;

                    default:
                        // do nothing
                        break;
                    }
                }
                if (!available)
                {
                    entryScannble = false;
                    entryable     = false;
                    exitable      = false;
                    exitScannable = false;
                }

                new ValidatorGateCommand(entryable, entryScannble, "").Execute();
                //_log.Info(string.Format("entry gate : AlwaysAllowEntry: [{0}] scannable:[{1}]", GateStatus.Instance.AlwaysAllowEntry, GateStatus.Instance.Scannable));

                // UDP the exit commands to Exit client
                var jsonObj = new ValidatorGateCommand(exitable, exitScannable, ValidatorGateCommand.FORWARDING_MSGTYPE);

                var json        = JsonConvert.SerializeObject(jsonObj);
                var sendingPort = ValidatorEnv.UDPEntrySendingPort; // always from entry to exit
                ValidatorCommunicator.Instance.SendCommandAsync(json, sendingPort);
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }
        }