public void Update2() { try { RecvData vBytes = null; PacketNumber = mRecvQueue.Count; int WeakPkgNum = 0; int nProcNumber = 0; bool DiscardWeak = false; if (PacketNumber > RecvPacketNumLimitter) { DiscardWeak = true; } lock (mRecvQueue) { for (int i = 0; i < PacketNumber; i++) { if (mRecvQueue.Count == 0) { break; } vBytes = mRecvQueue.Dequeue(); if (vBytes == null) { continue; } if (DiscardWeak) { unsafe { fixed(byte *pPkg = &vBytes.PkgData[0]) { if (((RPCHeader *)pPkg)->IsWeakPkg()) { WeakPkgNum++; continue; } } } } nProcNumber++; if (OnReceiveData != null) { OnReceiveData(this, vBytes.PkgData, vBytes.Length, vBytes.RecvTime); } vBytes.Dispose(); } } KickedWeakPkgNum = WeakPkgNum; ProcPackNumber = nProcNumber; } catch (System.Exception ex) { Profiler.Log.WriteException(ex); } if (mRun == false && this.Connected == false) { if (OnDisconnected != null) { OnDisconnected(this); } } }
public void Update1() { try { RecvData vBytes = null; PacketNumber = mRecvQueue.Count; int WeakPkgNum = 0; if (PacketNumber > RecvPacketNumLimitter) { lock (mRecvQueue) { for (int i = 0; i < PacketNumber; i++) { vBytes = mRecvQueue.Dequeue(); if (vBytes == null) { continue; } unsafe { fixed(byte *pPkg = &vBytes.PkgData[0]) { if (((RPCHeader *)pPkg)->IsWeakPkg()) { WeakPkgNum++; continue; } else { mRecvQueue.Enqueue(vBytes); } } } } } } KickedWeakPkgNum = WeakPkgNum; int nPacket = mRecvQueue.Count; if (nPacket > RecvPacketNumPerFrame) { nPacket = RecvPacketNumPerFrame; } int nProcNumber = 0; if (OnReceiveData != null) { while (mRecvQueue.Count > 0 && nPacket > 0) { if (mRecvQueue.Count == 0) { continue; } nPacket--; lock (mRecvQueue) { vBytes = mRecvQueue.Dequeue(); } if (vBytes == null) { break; } nProcNumber++; OnReceiveData(this, vBytes.PkgData, vBytes.Length, vBytes.RecvTime); vBytes.Dispose(); } } ProcPackNumber = nProcNumber; } catch (System.Exception ex) { Profiler.Log.WriteException(ex); } if (mRun == false && this.Connected == false) { if (OnDisconnected != null) { OnDisconnected(this); } } }