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