Ejemplo n.º 1
0
    public static ValidityFlags TestValidity(ref NetClockTester test, ref uLink.NetworkMessageInfo info, long intervalMS, ValidityFlags testFor)
    {
        ValidityFlags flags = TestValidity(ref test, info.timestampInMillis, intervalMS);

        test.Results.Add(flags & testFor);
        return(flags);
    }
Ejemplo n.º 2
0
    private static ValidityFlags TestValidity(ref NetClockTester test, ulong timeStamp, long minimalSendRateMS)
    {
        ulong         timeInMillis = NetCull.timeInMillis;
        ValidityFlags flags        = (timeInMillis >= timeStamp) ? ((ValidityFlags)0) : ValidityFlags.AheadOfServerTime;

        if (test.Count > 0L)
        {
            long b    = Subtract(timeStamp, test.Send.Last);
            long num3 = Subtract(timeInMillis, test.Receive.Last);
            test.Send.Sum     = Add(test.Send.Sum, b);
            test.Receive.Sum  = Add(test.Receive.Sum, num3);
            test.Count       += (ulong)1L;
            test.Send.Last    = timeStamp;
            test.Receive.Last = timeInMillis;
            if (b < minimalSendRateMS)
            {
                flags |= ValidityFlags.TooFrequent;
            }
            long num4 = Subtract(test.Send.Last, test.Send.First);
            long num5 = Subtract(test.Receive.Last, test.Receive.First);
            if (test.Count >= 5L)
            {
                if (num4 > (num5 * 2L))
                {
                    flags |= ValidityFlags.OverTimed;
                }
            }
            else if ((test.Count >= 3L) && (num4 > (num5 * 4L)))
            {
                flags |= ValidityFlags.OverTimed;
            }
            ValidityFlags lastTestFlags = test.LastTestFlags;
            test.LastTestFlags = flags;
            if (((flags & ValidityFlags.TooFrequent) == ValidityFlags.TooFrequent) && ((lastTestFlags & ValidityFlags.TooFrequent) != ValidityFlags.TooFrequent))
            {
                flags          &= ~ValidityFlags.TooFrequent;
                test.Count      = 1L;
                test.Send.First = test.Send.Last;
                test.Send.Sum   = 0L;
                if (num3 > 0L)
                {
                    test.Receive.First = (ulong)Subtract(test.Receive.Last, (ulong)num3);
                    test.Receive.Sum   = (ulong)num3;
                }
                else
                {
                    test.Receive.First = test.Receive.Last;
                    test.Receive.Sum   = 0L;
                }
            }
            return((flags != 0) ? flags : ValidityFlags.Valid);
        }
        test.Send.Sum     = (ulong)(test.Receive.Sum = 0L);
        test.Send.Last    = test.Send.First = timeStamp;
        test.Receive.Last = test.Receive.First = timeInMillis;
        test.Count        = 1L;
        return(flags);
    }
Ejemplo n.º 3
0
 public static ValidityFlags TestValidity(ref NetClockTester test, ref uLink.NetworkMessageInfo info, double intervalSec, ValidityFlags testFor)
 {
     return(TestValidity(ref test, ref info, (long)Math.Floor((double)(intervalSec * 1000.0)), testFor));
 }