//public static Command ObjInstance = null; ///// <summary>Command单例模式</summary> //public static Command GetInstance() //{ // return ObjInstance ?? (ObjInstance = new Command()); //} /// <summary>指令业务</summary> public void Service(ProtocolQueue model) { #if DEBUG XTrace.WriteLine("commandNumber:{0}", model.Protocol.commandNumber); #endif try { if (model.Session == null) { return; } var cs = new CommandSwitch(); if (model.Protocol.commandNumber == (int)UserCommand.HEARTBEAT) { cs.Switch(model.Protocol.commandNumber, model.Session, model.Protocol.data); cs.Dispose(); return; } TGGSession session = model.Session; var key = string.Format("{0}_{1}_{2}", session.Player.User.id, model.Protocol.moduleNumber, model.Protocol.commandNumber); if (Variable.CCI.ContainsKey(key)) { //session.SendData(session.InitProtocol(model, (int)ResponseType.TYPE_COMMAND_FAST, null)); return; } Variable.CCI.TryAdd(key, true); var data = cs.Switch(model.Protocol.commandNumber, session, model.Protocol.data); cs.Dispose(); if (data == null) { XTrace.WriteLine("指令错误:{0}", key); RemoveCommand(key); return; } var pv = session.InitProtocol(model, (int)ResponseType.TYPE_SUCCESS, data); session.SendData(pv); RemoveCommand(key); } catch (Exception ex) { XTrace.WriteException(ex); if (model.Session != null) { model.Session.CommandEnd(model); } } }
/// <summary>CommandSwitch单例模式 </summary> public static CommandSwitch GetInstance() { return(ObjInstance ?? (ObjInstance = new CommandSwitch())); }