private void OnRequestClose(RakNetConnection c)
 {
     if (_peer != null)
     {
         _peer.CloseConnection(c.Guid, true);
     }
 }
        private RakNetConnection CreateNewConnection(RakNetGUID raknetGuid, RakPeerInterface peer)
        {
            var cid = _handler.GenerateNewConnectionId();
            var c   = new RakNetConnection(raknetGuid, cid, peer, OnRequestClose);

            _connections.TryAdd(raknetGuid.g, c);
            return(c);
        }
            public static IConnectionStatistics GetConnectionStatistics(RakNetConnection connection)
            {
                var result = new RakNetConnectionStatistics();

                using (var stats = connection._rakPeer.GetStatistics(connection._rakPeer.GetSystemAddressFromGuid(connection._guid)))
                {
                    result.PacketLossRate = stats.packetlossLastSecond;
                    result.BytesPerSecondLimitationType = stats.isLimitedByOutgoingBandwidthLimit ? BPSLimitationType.OutgoingBandwidth : (stats.isLimitedByCongestionControl ? BPSLimitationType.CongestionControl : BPSLimitationType.None);
                    result.BytesPerSecondLimit          = (long)(stats.isLimitedByOutgoingBandwidthLimit ? stats.BPSLimitByOutgoingBandwidthLimit : stats.BPSLimitByCongestionControl);
                    result._queuedBytes   = stats.bytesInSendBuffer.ToArray();
                    result._queuedPackets = stats.messageInSendBuffer.ToArray();
                }

                return(result);
            }