コード例 #1
0
        public static TelnetCommand Factory(InputByteArray InputArray, CommandCode CmdCode)
        {
            TelnetCommand telnetCmd = null;

            TelnetSubject?subject = null;

            if (InputArray.RemainingLength > 2)
            {
                subject = InputArray.PeekTelnetSubject(2);
            }

            if (CmdCode == CommandCode.SE)
            {
                telnetCmd = new EndSubNegCommand(InputArray);
            }
            else if (CmdCode == CommandCode.EOR)
            {
                telnetCmd = new EOR_Command(InputArray);
            }

            else if (subject == null)
            {
                telnetCmd = new TelnetCommand(InputArray, CmdCode);
            }

            else if (subject.Value == TelnetSubject.NewEnviron)
            {
                telnetCmd = new NewEnvironCommand(InputArray, CmdCode);
            }

            else if (subject.Value == TelnetSubject.TerminalType)
            {
                telnetCmd = new TerminalTypeCommand(InputArray, CmdCode);
            }

            else if (subject.Value == TelnetSubject.END_OF_RECORD)
            {
                telnetCmd = new EndOfRecordStatement(InputArray, CmdCode);
            }

            else if (subject.Value == TelnetSubject.TRANSMIT_BINARY)
            {
                telnetCmd = new TransmitBinaryCommand(InputArray, CmdCode);
            }
            else if (subject.Value == TelnetSubject.NAWS)
            {
                telnetCmd = new NawsStatement(InputArray, CmdCode);
            }
            else if (subject.Value == TelnetSubject.ECHO)
            {
                throw new Exception("echo subject of " + CmdCode.ToString() + " command.");
            }
            else
            {
                throw new Exception("Unexpect telnet command");
            }

            return(telnetCmd);
        }