private void SendThreadUpdate() { int nPackageCount = 0; while (true) { while (!mSendPackageQueue.IsEmpty) { NetPackage mNetPackage = null; if (!mSendPackageQueue.TryDequeue(out mNetPackage)) { break; } SendNetStream(mNetPackage.buffer, 0, mNetPackage.Length); Thread.Sleep(1); } if (bClosed) { break; } Thread.Sleep(50); } DebugSystem.LogWarning("Client SendThread Safe Quit !"); }
public virtual void Update(double elapsed) { mUdpCheckPool.Update(elapsed); int nPackageCount = 0; while (mNeedHandlePackageQueue.Count > 0) { NetPackage mNetPackage = null; if (!mNeedHandlePackageQueue.TryDequeue(out mNetPackage)) { break; } NetPackageExecute(mNetPackage); if (mNetPackage is NetCombinePackage) { ObjectPoolManager.Instance.mCombinePackagePool.recycle(mNetPackage as NetCombinePackage); } else if (mNetPackage is NetUdpFixedSizePackage) { ObjectPoolManager.Instance.mUdpFixedSizePackagePool.recycle(mNetPackage as NetUdpFixedSizePackage); } nPackageCount++; } if (nPackageCount > 10) { DebugSystem.Log("客户端 处理逻辑包的数量: " + nPackageCount); } }
public void AddLogicHandleQueue(NetPackage mPackage) { if (mLogicFuncDic.ContainsKey(mPackage.nPackageId)) { mNeedHandlePackageQueue.Enqueue(mPackage); } else { DebugSystem.LogError("不存在的 协议ID: " + mPackage.nPackageId); } }
private void ReceiveCheckPackage(NetPackage mPackage) { PackageCheckResult mPackageCheckResult = Protocol3Utility.getData <PackageCheckResult> (mPackage); UInt16 whoId = (UInt16)(mPackageCheckResult.NWhoOrderId >> 16); UInt16 nOrderId = (UInt16)(mPackageCheckResult.NWhoOrderId & 0x0000FFFF); //DebugSystem.Log ("Client Check: nWhoId: " + whoId + " | nOrderId: " + nOrderId); bool bSender = bClient ? whoId == 1 : whoId == 2; if (bSender) { this.mUdpPeer.SendNetPackage(mPackage); CheckPackageInfo mRemovePackage = null; if (mWaitCheckSendDic.TryGetValue(nOrderId, out mRemovePackage)) { ObjectPoolManager.Instance.mUdpFixedSizePackagePool.recycle(mRemovePackage.mPackage); mRemovePackage.mPackage = null; mWaitCheckSendDic.Remove(nOrderId); mCheckPackagePool.recycle(mRemovePackage); } else { DebugSystem.LogError("Client 我已经收到 Send确认包了: " + nOrderId); } } else { CheckPackageInfo mRemovePackage = null; if (mWaitCheckReceiveDic.TryGetValue(nOrderId, out mRemovePackage)) { ObjectPoolManager.Instance.mUdpFixedSizePackagePool.recycle(mRemovePackage.mPackage); mRemovePackage.mPackage = null; mWaitCheckReceiveDic.Remove(nOrderId); mCheckPackagePool.recycle(mRemovePackage); } else { DebugSystem.LogError("Client 我已经收到Receive确认包了: " + nOrderId); } } }
public void SendNetPackage(NetPackage mNetPackage) { mSendPackageQueue.Enqueue(mNetPackage); }
private void NetPackageExecute(NetPackage mNetPackage) { mLogicFuncDic [mNetPackage.nPackageId] (mNetPackage); }
public static T getData <T>(NetPackage mPackage) where T : IMessage, new() { return(getData <T> (mPackage.buffer, ClientConfig.nUdpPackageFixedHeadSize, mPackage.Length - ClientConfig.nUdpPackageFixedHeadSize)); }
private void ReceiveServerHeartBeat(NetPackage mPackage) { HeartBeat msg = Protocol3Utility.getData <HeartBeat> (mPackage); }