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); }
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); }
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)); }