Exemplo n.º 1
0
        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);
     }
 }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 5
0
 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));
 }
Exemplo n.º 8
0
 private void ReceiveServerHeartBeat(NetPackage mPackage)
 {
     HeartBeat msg = Protocol3Utility.getData <HeartBeat> (mPackage);
 }