/// <summary> /// on received /// </summary> /// <param name="session"></param> /// <param name="cmdInfo"></param> public override void OnReceived(UdpSession session, TCommandInfo cmdInfo) { if (string.IsNullOrEmpty(cmdInfo.CmdName)) { return; } ThreadPool.QueueUserWorkItem(_ => { Command.IUdpCommand <TCommandInfo> cmd = null; this._dicCommand.TryGetValue(cmdInfo.CmdName, out cmd); try { if (cmd == null) { this.HandleUnKnowCommand(session, cmdInfo); } else { cmd.ExecuteCommand(session, cmdInfo); } } catch (Exception ex) { this.OnCommandExecException(session, cmdInfo, ex); } }); }
/// <summary> /// add command. /// </summary> /// <param name="cmd"></param> /// <exception cref="ArgumentNullException">cmd is null</exception> /// <exception cref="ArgumentNullException">cmd.Name is null</exception> protected void AddCommand(Command.IUdpCommand <TCommandInfo> cmd) { if (cmd == null) { throw new ArgumentNullException("cmd"); } if (string.IsNullOrEmpty(cmd.Name)) { throw new ArgumentNullException("cmd.name"); } this._dicCommand[cmd.Name] = cmd; }