Example #1
0
        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);
        }
Example #2
0
        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);
                }
                }
            }
        }
Example #3
0
 public static extern bool NET_GetStatistics(IntPtr nw, ulong connectionID, ref Native.RaknetStats data, int dataLength);