public virtual Native.RaknetStats GetStatistics(ulong guid) { this.Check(); Native.RaknetStats raknetStat = new Native.RaknetStats(); int num = (int)sizeof(Native.RaknetStats); if (!Native.NET_GetStatistics(this.ptr, guid, ref raknetStat, num)) { Debug.Log(string.Concat("NET_GetStatistics: Wrong size ", num)); } return(raknetStat); }
public virtual ulong GetStat(Connection connection, NetworkPeer.StatTypeLong type) { unsafe { this.Check(); Native.RaknetStats raknetStat = (connection == null ? this.GetStatistics((ulong)0) : this.GetStatistics(connection.guid)); switch (type) { case NetworkPeer.StatTypeLong.BytesSent: { return((ulong)(*(&raknetStat.runningTotal.FixedElementField + 5 * 8))); } case NetworkPeer.StatTypeLong.BytesSent_LastSecond: { return((ulong)(*(&raknetStat.valueOverLastSecond.FixedElementField + 5 * 8))); } case NetworkPeer.StatTypeLong.BytesReceived: { return((ulong)(*(&raknetStat.runningTotal.FixedElementField + 6 * 8))); } case NetworkPeer.StatTypeLong.BytesReceived_LastSecond: { return((ulong)(*(&raknetStat.valueOverLastSecond.FixedElementField + 6 * 8))); } case NetworkPeer.StatTypeLong.MessagesInSendBuffer: case NetworkPeer.StatTypeLong.MessagesInResendBuffer: { return((ulong)0); } case NetworkPeer.StatTypeLong.BytesInSendBuffer: { return((ulong)(&raknetStat.bytesInSendBuffer.FixedElementField)); } case NetworkPeer.StatTypeLong.BytesInResendBuffer: { return(raknetStat.bytesInResendBuffer); } case NetworkPeer.StatTypeLong.PacketLossAverage: { return((ulong)raknetStat.packetlossTotal * (long)10000); } case NetworkPeer.StatTypeLong.PacketLossLastSecond: { return((ulong)raknetStat.packetlossLastSecond * (long)10000); } case NetworkPeer.StatTypeLong.ThrottleBytes: { if (raknetStat.isLimitedByCongestionControl == 0) { return((ulong)0); } return(raknetStat.BPSLimitByCongestionControl); } default: { return((ulong)0); } } } }
public static extern bool NET_GetStatistics(IntPtr nw, ulong connectionID, ref Native.RaknetStats data, int dataLength);