Ejemplo n.º 1
0
        /// <summary>
        /// Called when timer has ticked
        /// </summary>
        private void TimerTick(object o)
        {
            if (m_iState == UdpConsts.UDP_STATE_IDLE)
            {
                return;
            }

            //Clean old client connections
            if (m_NextClearOldConnections < DateTime.Now)
            {
                m_Clients.RemoveOldConnections();
                m_Servers.RemoveOldConnections();
                m_NextClearOldConnections = DateTime.Now.AddSeconds(UdpConsts.CONNECTION_CLEAN_TIME);
            }

            //Ping all connections to servers
            if (m_NextPingConnections < DateTime.Now)
            {
                m_Servers.PingConnections();
                m_NextPingConnections = DateTime.Now.AddSeconds(UdpConsts.CONNECTION_PING_DELAY);
            }

            //Retry sending reliable packets
            if (m_NextReliableResend < DateTime.Now)
            {
                m_Servers.ReliableRetry();
                m_Clients.ReliableRetry();
                m_NextReliableResend = DateTime.Now.AddSeconds(UdpConsts.CONNECTION_RELIABLE_RETRY);
            }

            //Check the connection timeouts
            if (m_NextTimeoutCheck < DateTime.Now)
            {
                m_ConnTimeouts.CheckTimeouts( );
                m_NextTimeoutCheck = DateTime.Now.AddSeconds(UdpConsts.CONNECTION_TIMEOUT_CHECK);
            }
        }