Beispiel #1
0
        void UpdatePing(uint recvTime, uint sendTime, uint ackTime)
        {
            uint aliased = recvTime - sendTime;

            aliasedRtt = (aliasedRtt * 0.9f) + ((float)aliased / 1000f * 0.1f);

            if (UdpSocket.CalculateNetworkPing)
            {
                uint network = aliased - UdpMath.Clamp(ackTime, 0, aliased);
                networkRtt = (networkRtt * 0.9f) + ((float)network / 1000f * 0.1f);
            }
        }
Beispiel #2
0
        internal void OnEventConnectionOption(UdpEvent ev)
        {
            switch (ev.Option)
            {
            case UdpConnectionOption.AlwaysSendMtu:
                alwaysSendMtu = ev.OptionIntValue == 1;
                break;

            case UdpConnectionOption.MtuSize:
                mtu = UdpMath.Clamp(ev.OptionIntValue, socket.Config.MtuMin, socket.Config.MtuMax);
                break;
            }
        }
Beispiel #3
0
        UdpHeader MakeHeader(bool isObject)
        {
            UdpHeader header = new UdpHeader();

            header.IsObject    = isObject;
            header.AckHistory  = recvHistory;
            header.AckSequence = recvSequence;
            header.ObjSequence = UdpMath.SeqNext(sendSequence, UdpHeader.SEQ_MASK);
            header.Now         = socket.GetCurrentTime();

            if (recvTime > 0)
            {
                header.AckTime = (ushort)UdpMath.Clamp(header.Now - recvTime, 0, socket.Config.MaxPing);
            }

            return(header);
        }