/// <summary>执行指令</summary> public override void ExecuteCommand(TGGSession session, BinaryRequestInfo requestInfo) { #if DEBUG //XTrace.WriteLine("接收数据:{0}", BitConverter.ToString(requestInfo.Body, 0, requestInfo.Body.Length)); session.Logger.Debug(string.Format("接收数据:{0}", BitConverter.ToString(requestInfo.Body, 0, requestInfo.Body.Length))); #endif try { var sobj = new SocketObjectData { session = session, requestInfo = requestInfo }; var _temp = new CancellationTokenSource(); new Task(m => { var model = m as SocketObjectData; if (model == null) { return; } if (model.requestInfo.Body.Length <= 0) { return; } var stream = new MemoryStream(model.requestInfo.Body, 0, model.requestInfo.Body.Length); var byteArray = new ByteArray(stream); var dy = byteArray.ReadObject(); var retype = dy.GetType().Name; //判断接收数据类型 ASObject obj; switch (retype) { case "ASObject": { obj = (ASObject)dy; break; } case "ProtocolVo": { obj = AMFConvert.ToASObject(dy); break; } default: { return; } } var pv = AutoParseAsObject <ProtocolVo> .Parse(obj); if (pv.className != "ProtocolVo") { return; } ModuleQueue.GetInstance().LoadQueue(pv.moduleNumber, pv, model.session); #if DEBUG XTrace.WriteLine("Socket Handle接收数据Number:{0} - {1}", pv.moduleNumber, pv.commandNumber); #endif _temp.Cancel(); }, sobj, _temp.Token).Start(); } catch (Exception ex) { XTrace.WriteException(ex); } }
/// <summary>ModuleQueue单体模式</summary> public static ModuleQueue GetInstance() { return(ObjInstance ?? (ObjInstance = new ModuleQueue())); }