public override void Update() { if (HostID < 0) { return; } int connectionId, channelId, dataSize, bufferSize = NetworkMessage.MaxMessageSize; byte error; NetworkEventType evt; do { evt = NetworkTransport.ReceiveFromHost(HostID, out connectionId, out channelId, ReadBuffer, bufferSize, out dataSize, out error); switch (evt) { case NetworkEventType.Nothing: break; case NetworkEventType.ConnectEvent: OnNewConnection(connectionId); break; case NetworkEventType.DataEvent: OnRecieveData(connectionId, ReadBuffer, dataSize); break; case NetworkEventType.DisconnectEvent: OnDisconnect(connectionId, UNETUtility.CreateError(error)); break; default: Debug.LogError($"Unkown network message type recieved: {evt}"); break; } } while (evt != NetworkEventType.Nothing && !IsDisposed); }
public override void Disconnect(int connectionId) { byte error; NetworkTransport.Disconnect(HostID, connectionId, out error); UNETUtility.HandleError(error); }
public void Disconnect() { byte error; NetworkTransport.Disconnect(HostID, ConnectionID, out error); UNETUtility.HandleError(error); }
protected override void SendImpl(int connectionId, byte[] buffer, int count, NetworkReliablity reliablity) { byte error; var channelId = GetChannelID(reliablity); NetworkTransport.Send(HostID, connectionId, channelId, buffer, count, out error); UNETUtility.HandleError(error); }
public void SendBytes(byte[] buffer, int size, NetworkReliablity reliability = NetworkReliablity.Reliable) { byte error; var channelId = NetworkInterface.GetChannelID(reliability); NetworkTransport.Send(HostID, ConnectionID, channelId, buffer, size, out error); UNETUtility.HandleError(error); }
public override async Task <NetworkConnection> Connect(NetworkConnectionConfig config) { var address = ResolveAddress(config.IP); byte error; var connectionId = NetworkTransport.Connect(HostID, address, config.Port, 0, out error); UNETUtility.HandleError(error); var connection = AddConnection(connectionId); await connection.ConnectTask; return(connection); }
public async Task <INetworkConnection> Connect(string address, int port) { address = ResolveAddress(address); byte error; var connectionId = NetworkTransport.Connect(HostID, address, port, 0, out error); UNETUtility.HandleError(error); var connection = AddConnection(connectionId); await connection.ConnectTask.Task; return(connection); }
public override ConnectionStats GetConnectionStats(int connectionId) { var stats = new ConnectionStats(); byte error; stats.TotalBytesOut = NetworkTransport.GetOutgoingFullBytesCountForConnection(HostID, connectionId, out error); UNETUtility.HandleError(error); stats.CurrentRTT = NetworkTransport.GetCurrentRTT(HostID, connectionId, out error); UNETUtility.HandleError(error); stats.IncomingPacketsCount = NetworkTransport.GetIncomingPacketCount(HostID, connectionId, out error); UNETUtility.HandleError(error); stats.IncomingPacketsLost = NetworkTransport.GetIncomingPacketLossCount(HostID, connectionId, out error); UNETUtility.HandleError(error); return(stats); }
void OnDisconnect(int connectionId, byte error) { UNETConnection connection; if (!connectionMap.TryGetValue(connectionId, out connection)) { return; } var exception = UNETUtility.CreateError(error); if (exception == null) { connection.ConnectTask.TrySetResult(new object()); } else { connection.ConnectTask.TrySetException(exception); } OnPeerDisconnected?.Invoke(connection); RemoveConnection(connection); }