public Command Parse(string userText) { if (userText == "quit") { return(Command.Quit); } if (userText == "exit") { return(Command.Quit); } if (userText == "history") { return(Command.History); } if (userText == "help") { return(Command.Help); } if (userText == "about") { return(Command.About); } if (userText == "connect") { return(Command.IncompleteConnect); } if (userText == "disconnect") { return(Command.NotImplemented); } // ----- was this a valid 'connect' command ?? ------ ConnectCommandParseResult temp = ValidConnectionCommand(userText); // if valid, then try to connect to server if (temp.Valid) { LastConnectCommandParseResult.IpAddress = temp.IpAddress; LastConnectCommandParseResult.Port = temp.Port; return(Command.ConnectWithArguments); } // if get here, we don't recognise the command return(Command.NotRecognised); }
/// parse text from user /// IF /// in the form: connect <ip> <port> /// THEN /// return true /// /// else return false public ConnectCommandParseResult ValidConnectionCommand(string userText) { // defaults to Valid = false ConnectCommandParseResult result = new ConnectCommandParseResult(); /* * -------------------------------------------------- BEGIN * ------- quick hack to save matt typing connection details lots of times * REMOVE from final version !!!!!!! */ if (userText == "localhost") { result.Valid = true; result.IpAddress = "127.0.0.1"; result.Port = 11000; return(result); } // ---------------------------------------------------- END // 3 words // 1st = "connect" // 2nd = valid ip address // 3rd = port number string[] words = userText.Split(' '); // must be 3 words if (words.Length != 3) { return(result); } // first word must be 'connect' if (words[0] != "connect") { return(result); } // 3rd words must evaluate to an integer int userPort; if (Int32.TryParse(words[2], out userPort)) { // seems okay - so set values ready to attempt to connect result.Valid = true; result.IpAddress = words[1]; result.Port = userPort; } return(result); }