コード例 #1
0
ファイル: FrameWindow.cs プロジェクト: isoundy000/wzry-1
 public static void onFrapBootInfoSingleNtf(CSPkg msg)
 {
     if (HandleFraqBootSingle(msg.stPkgData.stFrapBootSingle))
     {
         MonoSingleton <Reconnection> .GetInstance().UpdateCachedLen(msg);
     }
     msg.Release();
 }
コード例 #2
0
ファイル: Reconnection.cs プロジェクト: isoundy000/wzry-1
 private void AddCachePkg(CSPkg msg)
 {
     DebugHelper.Assert(msg != null);
     if (!this.ms_bDealRelayCachePkg)
     {
         this.ms_cachePkgList.Add(msg);
     }
     else
     {
         msg.Release();
     }
 }
コード例 #3
0
ファイル: FrameWindow.cs プロジェクト: wujiangu/wanshiwu0.1
        private void RecordReplay(CSDT_FRAPBOOT_INFO fbid)
        {
            CSPkg msg = NetworkModule.CreateDefaultCSPKG(0x40a);
            SCPKG_FRAPBOOT_SINGLE stFrapBootSingle = msg.stPkgData.stFrapBootSingle;
            int usedSize = 0;

            if (fbid.pack(ref stFrapBootSingle.szInfoBuff, stFrapBootSingle.szInfoBuff.Length, ref usedSize, 0) == TdrError.ErrorType.TDR_NO_ERROR)
            {
                stFrapBootSingle.wLen = (ushort)usedSize;
                Singleton <GameReplayModule> .instance.RecordMsg(msg);
            }
            msg.Release();
        }
コード例 #4
0
ファイル: FrameWindow.cs プロジェクト: wujiangu/wanshiwu0.1
        public static void onFrapBootInfoMultipleNtf(CSPkg msg)
        {
            SCPKG_FRAPBOOTINFO stFrapBootInfo = msg.stPkgData.stFrapBootInfo;

            for (int i = 0; i < stFrapBootInfo.bSpareNum; i++)
            {
                if (HandleFraqBootSingle(stFrapBootInfo.astSpareFrap[i]))
                {
                    MonoSingleton <Reconnection> .GetInstance().UpdateCachedLen(msg);

                    break;
                }
            }
            msg.Release();
        }
コード例 #5
0
 public CSPkg RecvPackage()
 {
     if (base.connected && (base.connector != null))
     {
         byte[] buffer;
         int    num;
         if (base.connector.ReadUdpData(out buffer, out num) == ApolloResult.Success)
         {
             int   usedSize          = 0;
             CSPkg pkg               = CSPkg.New();
             TdrError.ErrorType type = pkg.unpack(ref buffer, num, ref usedSize, 0);
             if ((type == TdrError.ErrorType.TDR_NO_ERROR) && (usedSize > 0))
             {
                 return(pkg);
             }
             object[] objArray1 = new object[] { "UnpackUdpError: BufLen:", num, " TdrError:", type, " nParseSize:", usedSize };
             this.ReportException(new UnpackError(string.Concat(objArray1)));
         }
         if (base.connector.ReadData(out buffer, out num) == ApolloResult.Success)
         {
             int   num3 = 0;
             CSPkg pkg2 = CSPkg.New();
             TdrError.ErrorType type2 = pkg2.unpack(ref buffer, num, ref num3, 0);
             if ((type2 == TdrError.ErrorType.TDR_NO_ERROR) && (num3 > 0))
             {
                 int index = 0;
                 while (index < this.confirmSendQueue.Count)
                 {
                     CSPkg pkg3 = this.confirmSendQueue[index];
                     if ((pkg3.stPkgHead.dwReserve > 0) && (pkg3.stPkgHead.dwReserve == pkg2.stPkgHead.dwMsgID))
                     {
                         pkg3.Release();
                         this.confirmSendQueue.RemoveAt(index);
                     }
                     else
                     {
                         index++;
                     }
                 }
                 return(pkg2);
             }
             object[] objArray2 = new object[] { "UnpackError: BufLen:", num, " TdrError:", type2, " nParseSize:", num3 };
             this.ReportException(new UnpackError(string.Concat(objArray2)));
         }
     }
     return(null);
 }
コード例 #6
0
        private void FlushSendCmd(IFrameCommand inCmd)
        {
            IFrameCommand frameCommand  = null;
            IFrameCommand frameCommand2 = null;
            IFrameCommand frameCommand3 = null;

            if (inCmd != null)
            {
                frameCommand  = inCmd;
                frameCommand2 = this.cmdRedundancyQueue[this.nCmdRedQueueIndex];
                frameCommand3 = this.cmdRedundancyQueue[(this.nCmdRedQueueIndex - 1 + 3) % 3];
            }
            else
            {
                frameCommand  = this.cmdRedundancyQueue[this.nCmdRedQueueIndex];
                frameCommand2 = this.cmdRedundancyQueue[(this.nCmdRedQueueIndex - 1 + 3) % 3];
                frameCommand3 = this.cmdRedundancyQueue[(this.nCmdRedQueueIndex - 2 + 3) % 3];
            }
            if (frameCommand != null && (inCmd != null || frameCommand.sendCnt < 3))
            {
                CSPkg cSPkg = NetworkModule.CreateDefaultCSPKG(1004u);
                cSPkg.stPkgData.get_stGamingUperMsg().bNum = 0;
                this.PackCmd2Msg(ref frameCommand, cSPkg.stPkgData.get_stGamingUperMsg().astUperInfo[(int)cSPkg.stPkgData.get_stGamingUperMsg().bNum]);
                CSPKG_GAMING_UPERMSG expr_D3 = cSPkg.stPkgData.get_stGamingUperMsg();
                expr_D3.bNum += 1;
                IFrameCommand expr_E2 = frameCommand;
                expr_E2.sendCnt += 1;
                if (frameCommand2 != null && frameCommand2.sendCnt < 3 && (ulong)(frameCommand2.frameNum + 10u) > (ulong)((long)Time.frameCount))
                {
                    this.PackCmd2Msg(ref frameCommand2, cSPkg.stPkgData.get_stGamingUperMsg().astUperInfo[(int)cSPkg.stPkgData.get_stGamingUperMsg().bNum]);
                    CSPKG_GAMING_UPERMSG expr_14B = cSPkg.stPkgData.get_stGamingUperMsg();
                    expr_14B.bNum += 1;
                    IFrameCommand expr_15A = frameCommand2;
                    expr_15A.sendCnt += 1;
                    if (frameCommand3 != null && frameCommand3.sendCnt < 3 && (ulong)(frameCommand3.frameNum + 10u) > (ulong)((long)Time.frameCount))
                    {
                        this.PackCmd2Msg(ref frameCommand3, cSPkg.stPkgData.get_stGamingUperMsg().astUperInfo[(int)cSPkg.stPkgData.get_stGamingUperMsg().bNum]);
                        CSPKG_GAMING_UPERMSG expr_1C3 = cSPkg.stPkgData.get_stGamingUperMsg();
                        expr_1C3.bNum += 1;
                        IFrameCommand expr_1D2 = frameCommand3;
                        expr_1D2.sendCnt += 1;
                    }
                }
                this.SendPackage(cSPkg);
                cSPkg.Release();
            }
        }
コード例 #7
0
        public static void onFrapBootInfoMultipleNtf(CSPkg msg)
        {
            SCPKG_FRAPBOOTINFO stFrapBootInfo = msg.stPkgData.get_stFrapBootInfo();

            for (int i = 0; i < (int)stFrapBootInfo.bSpareNum; i++)
            {
                if (FrameWindow.HandleFraqBootSingle(stFrapBootInfo.astSpareFrap[i]))
                {
                    MonoSingleton <Reconnection> .GetInstance().UpdateCachedLen(msg);

                    break;
                }
            }
            Singleton <FrameWindow> .GetInstance().SampleFrameSpare((int)stFrapBootInfo.bSpareNum);

            msg.Release();
        }
コード例 #8
0
        public static void onRelaySvrPingMsg(CSPkg msg)
        {
            if (Singleton <FrameSynchr> .instance.bActive && Singleton <FrameSynchr> .instance.bRunning)
            {
                uint num = ((uint)(Time.realtimeSinceStartup * 1000f)) - msg.stPkgData.stRelaySvrPing.dwTime;
                Singleton <FrameSynchr> .instance.m_pingRecords.Add((uint)Mathf.Clamp((float)num, 0f, 1000f));

                FrameSynchr instance = Singleton <FrameSynchr> .instance;
                instance.m_PingIdx++;
                Singleton <FrameSynchr> .instance.m_AvePing = ((Singleton <FrameSynchr> .instance.m_AvePing * (Singleton <FrameSynchr> .instance.m_PingIdx - 1)) + num) / Singleton <FrameSynchr> .instance.m_PingIdx;
                Singleton <FrameSynchr> .instance.m_pingWobble.Add((uint)Mathf.Abs((float)(num - Singleton <FrameSynchr> .instance.m_AvePing)));

                if (num > Singleton <FrameSynchr> .instance.m_MaxPing)
                {
                    Singleton <FrameSynchr> .instance.m_MaxPing = num;
                }
                if (num < Singleton <FrameSynchr> .instance.m_MinPing)
                {
                    Singleton <FrameSynchr> .instance.m_MinPing = num;
                }
                Singleton <FrameSynchr> .instance.GameSvrPing = (((int)num) + Singleton <FrameSynchr> .instance.GameSvrPing) / 2;
                if ((Time.time - Singleton <FrameSynchr> .instance.m_PingTimeBegin) > 5f)
                {
                    Singleton <FrameSynchr> .instance.m_PingTimeBegin = Time.time;
                    if (Singleton <FrameSynchr> .instance.m_LastPing == 0)
                    {
                        Singleton <FrameSynchr> .instance.m_LastPing = num;
                    }
                    if (Math.Abs((long)(Singleton <FrameSynchr> .instance.m_LastPing - num)) > 100L)
                    {
                        FrameSynchr local2 = Singleton <FrameSynchr> .instance;
                        local2.m_Abnormal_PingCount++;
                        Singleton <FrameSynchr> .instance.m_LastPing = num;
                    }
                }
                if ((Singleton <FrameSynchr> .instance.m_pingRecords.Count > 100) && (Singleton <FrameSynchr> .instance.GameSvrPing > 300))
                {
                    RealPing();
                }
                Singleton <FrameSynchr> .instance.PrepareReportPingToBeacon(Singleton <FrameSynchr> .instance.GameSvrPing);
            }
            msg.Release();
        }
コード例 #9
0
 public CSPkg RecvPackage()
 {
     if (this.connected && this.connector != null)
     {
         byte[] array;
         int    num;
         if (this.connector.ReadUdpData(ref array, ref num) == null)
         {
             int   num2  = 0;
             CSPkg cSPkg = CSPkg.New();
             if (cSPkg.unpack(ref array, num, ref num2, 0u) == null && num2 > 0)
             {
                 return(cSPkg);
             }
         }
         if (this.connector.ReadData(ref array, ref num) == null)
         {
             int   num3   = 0;
             CSPkg cSPkg2 = CSPkg.New();
             if (cSPkg2.unpack(ref array, num, ref num3, 0u) == null && num3 > 0)
             {
                 int i = 0;
                 while (i < this.confirmSendQueue.get_Count())
                 {
                     CSPkg cSPkg3 = this.confirmSendQueue.get_Item(i);
                     if (cSPkg3.stPkgHead.dwReserve > 0u && cSPkg3.stPkgHead.dwReserve == cSPkg2.stPkgHead.dwMsgID)
                     {
                         cSPkg3.Release();
                         this.confirmSendQueue.RemoveAt(i);
                     }
                     else
                     {
                         i++;
                     }
                 }
                 return(cSPkg2);
             }
         }
     }
     return(null);
 }
コード例 #10
0
 public CSPkg RecvPackage()
 {
     if (this.connected && this.connector != null)
     {
         byte[] array;
         int    size;
         if (this.connector.ReadUdpData(out array, out size) == ApolloResult.Success)
         {
             int   num   = 0;
             CSPkg cSPkg = CSPkg.New();
             if (cSPkg.unpack(ref array, size, ref num, 0u) == TdrError.ErrorType.TDR_NO_ERROR && num > 0)
             {
                 return(cSPkg);
             }
         }
         if (this.connector.ReadData(out array, out size) == ApolloResult.Success)
         {
             int   num2   = 0;
             CSPkg cSPkg2 = CSPkg.New();
             if (cSPkg2.unpack(ref array, size, ref num2, 0u) == TdrError.ErrorType.TDR_NO_ERROR && num2 > 0)
             {
                 int i = 0;
                 while (i < this.confirmSendQueue.get_Count())
                 {
                     CSPkg cSPkg3 = this.confirmSendQueue.get_Item(i);
                     if (cSPkg3.stPkgHead.dwReserve > 0u && cSPkg3.stPkgHead.dwReserve == cSPkg2.stPkgHead.dwMsgID)
                     {
                         cSPkg3.Release();
                         this.confirmSendQueue.RemoveAt(i);
                     }
                     else
                     {
                         i++;
                     }
                 }
                 return(cSPkg2);
             }
         }
     }
     return(null);
 }
コード例 #11
0
 public CSPkg RecvPackage()
 {
     if (base.connected && (base.connector != null))
     {
         byte[] buffer;
         int    num;
         if (base.connector.ReadUdpData(out buffer, out num) == ApolloResult.Success)
         {
             int   usedSize = 0;
             CSPkg pkg      = CSPkg.New();
             if ((pkg.unpack(ref buffer, num, ref usedSize, 0) == TdrError.ErrorType.TDR_NO_ERROR) && (usedSize > 0))
             {
                 return(pkg);
             }
         }
         if (base.connector.ReadData(out buffer, out num) == ApolloResult.Success)
         {
             int   num3 = 0;
             CSPkg pkg2 = CSPkg.New();
             if ((pkg2.unpack(ref buffer, num, ref num3, 0) == TdrError.ErrorType.TDR_NO_ERROR) && (num3 > 0))
             {
                 int index = 0;
                 while (index < this.confirmSendQueue.Count)
                 {
                     CSPkg pkg3 = this.confirmSendQueue[index];
                     if ((pkg3.stPkgHead.dwReserve > 0) && (pkg3.stPkgHead.dwReserve == pkg2.stPkgHead.dwMsgID))
                     {
                         pkg3.Release();
                         this.confirmSendQueue.RemoveAt(index);
                     }
                     else
                     {
                         index++;
                     }
                 }
                 return(pkg2);
             }
         }
     }
     return(null);
 }
コード例 #12
0
ファイル: FrameSynchr.cs プロジェクト: lz8399/WangZheRongYao
 public static void onRelaySvrPingMsg(CSPkg msg)
 {
     if (Singleton <FrameSynchr> .instance.bActive && Singleton <FrameSynchr> .instance.bRunning)
     {
         FrameSynchr instance = Singleton <FrameSynchr> .instance;
         uint        curPing  = ((uint)(Time.realtimeSinceStartup * 1000f)) - msg.stPkgData.stRelaySvrPing.dwTime;
         instance.m_pingRecords.Add((uint)Mathf.Clamp((float)curPing, 0f, 1000f));
         instance.m_PingIdx++;
         instance.m_AvePing = ((instance.m_AvePing * (instance.m_PingIdx - 1)) + curPing) / instance.m_PingIdx;
         instance.m_pingWobble.Add((uint)Mathf.Abs((float)(curPing - instance.m_AvePing)));
         if (curPing > instance.m_MaxPing)
         {
             instance.m_MaxPing = curPing;
         }
         if (curPing < instance.m_MinPing)
         {
             instance.m_MinPing = curPing;
         }
         instance.GameSvrPing = (((int)curPing) + instance.GameSvrPing) / 2;
         if ((Time.time - instance.m_PingTimeBegin) > 5f)
         {
             instance.m_PingTimeBegin = Time.time;
             if (instance.m_LastPing == 0)
             {
                 instance.m_LastPing = curPing;
             }
             if (Math.Abs((long)(instance.m_LastPing - curPing)) > 100L)
             {
                 instance.m_Abnormal_PingCount++;
                 instance.m_LastPing = curPing;
             }
         }
         if ((instance.m_pingRecords.Count > 100) && (instance.GameSvrPing > 300))
         {
             RealPing();
         }
         instance.PrepareReportPingToBeacon(instance.GameSvrPing);
     }
     msg.Release();
 }
コード例 #13
0
        public void HandleSending()
        {
            if (this.connected)
            {
                this.FlushSendCmd(null);
                for (int i = 0; i < this.confirmSendQueue.get_Count(); i++)
                {
                    CSPkg cSPkg = this.confirmSendQueue.get_Item(i);
                    if (Singleton <GameLogic> .get_instance().GameRunningTick - cSPkg.stPkgHead.dwSvrPkgSeq > 5000u)
                    {
                        this.SendPackage(cSPkg);
                        cSPkg.stPkgHead.dwSvrPkgSeq = Singleton <GameLogic> .get_instance().GameRunningTick;
                    }
                }
                while (this.connected && this.gameMsgSendQueue.get_Count() > 0)
                {
                    CSPkg cSPkg2 = this.gameMsgSendQueue.get_Item(0);
                    if (!this.SendPackage(cSPkg2))
                    {
                        break;
                    }
                    if (cSPkg2.stPkgHead.dwReserve > 0u)
                    {
                        cSPkg2.stPkgHead.dwSvrPkgSeq = Singleton <GameLogic> .get_instance().GameRunningTick;

                        this.confirmSendQueue.Add(cSPkg2);
                    }
                    else
                    {
                        cSPkg2.Release();
                    }
                    this.gameMsgSendQueue.RemoveAt(0);
                }
            }
            else
            {
                MonoSingleton <Reconnection> .get_instance().UpdateReconnect();
            }
        }
コード例 #14
0
        public static void onRelaySvrPingMsg(CSPkg msg)
        {
            uint dwSeqNo = msg.stPkgData.stRelaySvrPing.dwSeqNo;

            Singleton <DataReportSys> .GetInstance().onRelaySvrPingMsg(dwSeqNo, Singleton <FrameSynchr> .instance.bActive && Singleton <FrameSynchr> .instance.bRunning, msg.stPkgData.stRelaySvrPing.dwTime);

            if (Singleton <FrameSynchr> .instance.bActive && Singleton <FrameSynchr> .instance.bRunning)
            {
                uint num = (uint)(Time.realtimeSinceStartup * 1000f) - msg.stPkgData.stRelaySvrPing.dwTime;
                Singleton <FrameSynchr> .instance.GameSvrPing = (int)((ulong)num + (ulong)((long)Singleton <FrameSynchr> .instance.GameSvrPing)) / 2;
                FrameSynchr.SetNetAccIPAndPort();
                if (NetworkAccelerator.Inited && !NetworkAccelerator.started && Time.unscaledTime - Singleton <FrameSynchr> .instance.m_NetAccPingTimeBegin > 1f)
                {
                    Singleton <FrameSynchr> .instance.m_NetAccPingTimeBegin = Time.unscaledTime;
                    NetworkAccelerator.OnNetDelay((int)num);
                }
                if (Singleton <DataReportSys> .GetInstance().HeartPingCount > 100 && Singleton <FrameSynchr> .instance.GameSvrPing > 300)
                {
                    FrameSynchr.RealPing();
                }
            }
            msg.Release();
        }
コード例 #15
0
 public void HandleSending()
 {
     if (base.connected)
     {
         for (int i = 0; i < this.confirmSendQueue.Count; i++)
         {
             CSPkg msg = this.confirmSendQueue[i];
             if ((Singleton <GameLogic> .instance.GameRunningTick - msg.stPkgHead.dwSvrPkgSeq) > 0x1388)
             {
                 this.SendPackage(msg);
                 msg.stPkgHead.dwSvrPkgSeq = Singleton <GameLogic> .instance.GameRunningTick;
             }
         }
         while (base.connected && (this.gameMsgSendQueue.Count > 0))
         {
             CSPkg pkg2 = this.gameMsgSendQueue[0];
             if (!this.SendPackage(pkg2))
             {
                 break;
             }
             if (pkg2.stPkgHead.dwReserve > 0)
             {
                 pkg2.stPkgHead.dwSvrPkgSeq = Singleton <GameLogic> .instance.GameRunningTick;
                 this.confirmSendQueue.Add(pkg2);
             }
             else
             {
                 pkg2.Release();
             }
             this.gameMsgSendQueue.RemoveAt(0);
         }
     }
     else
     {
         MonoSingleton <Reconnection> .instance.UpdateReconnect();
     }
 }
コード例 #16
0
ファイル: FrameSynchr.cs プロジェクト: TonyDongGuaPi/joework
        public static void onRelaySvrPingMsg(CSPkg msg)
        {
            long num = (long)((ulong)msg.stPkgData.get_stRelaySvrPing().dwSeqNo);

            if (Singleton <FrameSynchr> .get_instance().m_LastReceiveHeartSeq <= 0L)
            {
                Singleton <FrameSynchr> .get_instance().m_LastReceiveHeartSeq = num;
            }
            else
            {
                long num2 = num - Singleton <FrameSynchr> .get_instance().m_LastReceiveHeartSeq;

                if (num2 >= 2L)
                {
                    Singleton <FrameSynchr> .get_instance().m_pingLost += num2;
                }
                Singleton <FrameSynchr> .get_instance().m_LastReceiveHeartSeq = num;
            }
            if (Singleton <FrameSynchr> .get_instance().bActive&& Singleton <FrameSynchr> .get_instance().bRunning)
            {
                uint num3 = (uint)(Time.realtimeSinceStartup * 1000f) - msg.stPkgData.get_stRelaySvrPing().dwTime;
                if (Singleton <FrameSynchr> .GetInstance().m_SendHeartSeq == num + 1L)
                {
                    Singleton <FrameSynchr> .get_instance().m_pingRecords.Add(num3);

                    Singleton <FrameSynchr> .get_instance().m_PingIdx += 1u;

                    Singleton <FrameSynchr> .get_instance().m_AvePing = (Singleton <FrameSynchr> .get_instance().m_AvePing *(Singleton <FrameSynchr> .get_instance().m_PingIdx - 1u) + num3) / Singleton <FrameSynchr> .get_instance().m_PingIdx;

                    Singleton <FrameSynchr> .get_instance().m_pingWobble.Add((uint)Mathf.Abs(num3 - Singleton <FrameSynchr> .get_instance().m_AvePing));

                    if (num3 > Singleton <FrameSynchr> .get_instance().m_MaxPing)
                    {
                        Singleton <FrameSynchr> .get_instance().m_MaxPing = num3;
                    }
                    if (num3 < Singleton <FrameSynchr> .get_instance().m_MinPing)
                    {
                        Singleton <FrameSynchr> .get_instance().m_MinPing = num3;
                    }
                    if (num3 > 300u)
                    {
                        Singleton <FrameSynchr> .get_instance().m_ping300Count += 1L;
                    }
                    if (num3 >= 150u && num3 <= 300u)
                    {
                        Singleton <FrameSynchr> .get_instance().m_ping150to300 += 1L;
                    }
                    else if (num3 < 150u)
                    {
                        Singleton <FrameSynchr> .get_instance().m_ping150 += 1L;
                    }
                }
                Singleton <FrameSynchr> .get_instance().GameSvrPing = (int)((ulong)num3 + (ulong)((long)Singleton <FrameSynchr> .get_instance().GameSvrPing)) / 2;

                FrameSynchr.SetNetAccIPAndPort();
                if (NetworkAccelerator.enabled && !NetworkAccelerator.started && Time.unscaledTime - Singleton <FrameSynchr> .get_instance().m_NetAccPingTimeBegin > 1f)
                {
                    Singleton <FrameSynchr> .get_instance().m_NetAccPingTimeBegin = Time.unscaledTime;

                    NetworkAccelerator.OnNetDelay((int)num3);
                }
                if (Time.unscaledTime - Singleton <FrameSynchr> .get_instance().m_PingTimeBegin > 5f)
                {
                    Singleton <FrameSynchr> .get_instance().m_PingTimeBegin = Time.unscaledTime;

                    if (Singleton <FrameSynchr> .get_instance().m_LastPing == 0u)
                    {
                        Singleton <FrameSynchr> .get_instance().m_LastPing = num3;
                    }
                    if (Math.Abs((long)((ulong)(Singleton <FrameSynchr> .get_instance().m_LastPing - num3))) > 100L)
                    {
                        Singleton <FrameSynchr> .get_instance().m_Abnormal_PingCount++;

                        Singleton <FrameSynchr> .get_instance().m_LastPing = num3;
                    }
                }
                if (Singleton <FrameSynchr> .get_instance().m_pingRecords.get_Count() > 100 && Singleton <FrameSynchr> .get_instance().GameSvrPing > 300)
                {
                    FrameSynchr.RealPing();
                }
            }
            msg.Release();
        }
コード例 #17
0
        public static void onRelaySvrPingMsg(CSPkg msg)
        {
            long dwSeqNo = msg.stPkgData.stRelaySvrPing.dwSeqNo;

            if (Singleton <FrameSynchr> .instance.m_LastReceiveHeartSeq <= 0L)
            {
                Singleton <FrameSynchr> .instance.m_LastReceiveHeartSeq = dwSeqNo;
            }
            else
            {
                long num2 = dwSeqNo - Singleton <FrameSynchr> .instance.m_LastReceiveHeartSeq;
                if (num2 >= 2L)
                {
                    FrameSynchr instance = Singleton <FrameSynchr> .instance;
                    instance.m_pingLost += num2;
                }
                Singleton <FrameSynchr> .instance.m_LastReceiveHeartSeq = dwSeqNo;
            }
            if (Singleton <FrameSynchr> .instance.bActive && Singleton <FrameSynchr> .instance.bRunning)
            {
                uint num3 = ((uint)(Time.realtimeSinceStartup * 1000f)) - msg.stPkgData.stRelaySvrPing.dwTime;
                Singleton <FrameSynchr> .instance.m_pingRecords.Add((uint)Mathf.Clamp((float)num3, 0f, 1000f));

                FrameSynchr local2 = Singleton <FrameSynchr> .instance;
                local2.m_PingIdx++;
                Singleton <FrameSynchr> .instance.m_AvePing = ((Singleton <FrameSynchr> .instance.m_AvePing * (Singleton <FrameSynchr> .instance.m_PingIdx - 1)) + num3) / Singleton <FrameSynchr> .instance.m_PingIdx;
                Singleton <FrameSynchr> .instance.m_pingWobble.Add((uint)Mathf.Abs((float)(num3 - Singleton <FrameSynchr> .instance.m_AvePing)));

                if (num3 > Singleton <FrameSynchr> .instance.m_MaxPing)
                {
                    Singleton <FrameSynchr> .instance.m_MaxPing = num3;
                }
                if (num3 < Singleton <FrameSynchr> .instance.m_MinPing)
                {
                    Singleton <FrameSynchr> .instance.m_MinPing = num3;
                }
                if (num3 > 300)
                {
                    FrameSynchr local3 = Singleton <FrameSynchr> .instance;
                    local3.m_ping300Count += 1L;
                }
                if ((num3 >= 150) && (num3 <= 300))
                {
                    FrameSynchr local4 = Singleton <FrameSynchr> .instance;
                    local4.m_ping150to300 += 1L;
                }
                else if (num3 < 150)
                {
                    FrameSynchr local5 = Singleton <FrameSynchr> .instance;
                    local5.m_ping150 += 1L;
                }
                Singleton <FrameSynchr> .instance.GameSvrPing = (((int)num3) + Singleton <FrameSynchr> .instance.GameSvrPing) / 2;
                SetNetAccIPAndPort();
                if ((NetworkAccelerator.enabled && !NetworkAccelerator.started) && ((Time.unscaledTime - Singleton <FrameSynchr> .instance.m_NetAccPingTimeBegin) > 1f))
                {
                    Singleton <FrameSynchr> .instance.m_NetAccPingTimeBegin = Time.unscaledTime;
                    NetworkAccelerator.OnNetDelay((int)num3);
                }
                if ((Time.unscaledTime - Singleton <FrameSynchr> .instance.m_PingTimeBegin) > 5f)
                {
                    Singleton <FrameSynchr> .instance.m_PingTimeBegin = Time.unscaledTime;
                    if (Singleton <FrameSynchr> .instance.m_LastPing == 0)
                    {
                        Singleton <FrameSynchr> .instance.m_LastPing = num3;
                    }
                    if (Math.Abs((long)(Singleton <FrameSynchr> .instance.m_LastPing - num3)) > 100L)
                    {
                        FrameSynchr local6 = Singleton <FrameSynchr> .instance;
                        local6.m_Abnormal_PingCount++;
                        Singleton <FrameSynchr> .instance.m_LastPing = num3;
                    }
                }
                if ((Singleton <FrameSynchr> .instance.m_pingRecords.Count > 100) && (Singleton <FrameSynchr> .instance.GameSvrPing > 300))
                {
                    RealPing();
                }
                Singleton <FrameSynchr> .instance.PrepareReportPingToBeacon(Singleton <FrameSynchr> .instance.GameSvrPing);
            }
            msg.Release();
        }