public static ICommand CreateCommand(CommandData cmdData) { switch (cmdData.CommandType) { case CommandType.ToSelf: return new ToSelfCommand(cmdData); case CommandType.Broardcast: return new BroardcastCommand(cmdData); } return null; }
public static CommandData Parse(string cmd, out string errorInfo) { var cmdData = new CommandData(); errorInfo = null; var parts = cmd.Split(ServerDefines.CommandSplitChar); foreach (var part in parts) { var index = part.IndexOf('='); if (index <= 0 || index + 1 >= part.Length) { errorInfo = string.Format("Invalid command parameter:{0}", part); return null; } var key = part.Substring(0, index).Trim().ToUpper(); var value = part.Substring(index + 1).Trim(); switch (key) { case ServerDefines.CommandType: if (value.Equals(ServerDefines.ToSelf, StringComparison.OrdinalIgnoreCase)) { cmdData.CommandType = CommandType.ToSelf; } else if (value.Equals(ServerDefines.Broardcast, StringComparison.OrdinalIgnoreCase)) { cmdData.CommandType = CommandType.Broardcast; } else { errorInfo = string.Format("Invalid command type:{0}", part); return null; } break; case ServerDefines.Message: cmdData.Request.Message = value; break; default: errorInfo = string.Format("Unknown command type."); return null; } } return cmdData; }
public ToSelfCommand(CommandData cmdData) { _cmdData = cmdData; }
private void ProcessCommand(CommandData cmdData) { Logger.Instance().InfoWithFormat(" >> Process Command {0} from {1}:{2}", cmdData.CommandType, cmdData.Sender.ConnectionInfo.ClientIpAddress, cmdData.Sender.ConnectionInfo.Id); var cmdObj = CommandFactory.CreateCommand(cmdData); cmdObj.Excute(); }
public BroardcastCommand(CommandData cmdData) { _cmdData = cmdData; }