public override NetworkEvent PollEvent(out ulong clientId, out NetworkChannel channel, out ArraySegment <byte> payload, out float receiveTime) { NetworkEventInfo info = networkEvents.Count > 0 ? networkEvents.Dequeue() : null; if (info != null) { if (info.error) { payload = default; channel = default; clientId = info.clientId; receiveTime = Time.realtimeSinceStartup; throw info.exception; } clientId = info.clientId; channel = (NetworkChannel)info.channel; payload = info.payload; receiveTime = info.receiveTime; return(info.eventType); } payload = default; channel = default; clientId = default; receiveTime = Time.realtimeSinceStartup; return(NetworkEvent.Nothing); }
private void OnServerDataRecv(int clientId, ArraySegment <byte> payload, int channel) { if (channel == 3 && false) { if (payload.Array[0 + payload.Offset] == 0) { payload.Array[0 + payload.Offset] = 0xff; InternalSend(clientId, payload, (byte)channel); } else { float sendTime = BitConverter.ToSingle(payload.Array, payload.Offset + 1); pings[clientId] = (ulong)((Time.realtimeSinceStartup - sendTime) / 1000.0f); } return; } NetworkEventInfo info = new NetworkEventInfo(); info.eventType = NetworkEvent.Data; info.clientId = (ulong)clientId; info.channel = (byte)channel; info.payload = payload; info.receiveTime = Time.realtimeSinceStartup; networkEvents.Enqueue(info); }
private void OnCommonDataRecv(ulong clientId, byte[] payload, int channel) { if (channel == 0 && false) { if (payload[0] == 0) { payload[0] = 0xff; SendInternal(clientId, new ArraySegment <byte>(payload), (byte)channel); } else { float sendTime = BitConverter.ToSingle(payload, 1); //pings[clientId] = (ulong)((Time.realtimeSinceStartup - sendTime) / 1000.0f); } return; } NetworkEventInfo info = new NetworkEventInfo(); info.eventType = NetworkEvent.Data; info.clientId = clientId; info.channel = (byte)channel; info.payload = new ArraySegment <byte>(payload); info.receiveTime = Time.realtimeSinceStartup; networkEvents.Enqueue(info); }
private void OnServerDisconnect(int clientId) { NetworkEventInfo info = new NetworkEventInfo(); info.eventType = NetworkEvent.Disconnect; info.clientId = (ulong)clientId; info.receiveTime = Time.realtimeSinceStartup; networkEvents.Enqueue(info); }
private void OnServerError(int clientId, Exception e) { NetworkEventInfo info = new NetworkEventInfo(); info.eventType = NetworkEvent.Nothing; info.clientId = (ulong)clientId; info.error = true; info.exception = e; info.receiveTime = Time.realtimeSinceStartup; networkEvents.Enqueue(info); }
private void OnClientConnect() { connectedClients.Add((int)ServerClientId); NetworkEventInfo info = new NetworkEventInfo(); info.eventType = NetworkEvent.Connect; info.clientId = ServerClientId; info.receiveTime = Time.realtimeSinceStartup; networkEvents.Enqueue(info); }
private void OnCommonConnect(ulong clientId) { connectedClients.Add(clientId); NetworkEventInfo info = new NetworkEventInfo(); info.eventType = NetworkEvent.Connect; info.clientId = clientId; info.receiveTime = Time.realtimeSinceStartup; networkEvents.Enqueue(info); }
public override NetworkEvent PollEvent(out ulong clientId, out NetworkChannel channel, out ArraySegment <byte> payload, out float receiveTime) { NetworkEventInfo info = networkEvents.Count > 0 ? networkEvents.Dequeue() : null; if (info != null) { if (info.error) { payload = default; channel = default; clientId = info.clientId; receiveTime = Time.realtimeSinceStartup; throw info.exception; } clientId = info.clientId; channel = (NetworkChannel)info.channel; payload = info.payload; receiveTime = info.receiveTime; if (connectTask != null && client != null && client.isConnecting && clientId == ServerClientId && (info.eventType == NetworkEvent.Connect || info.eventType == NetworkEvent.Disconnect)) { Debug.Log("Connection with server:" + info.eventType); if (info.eventType == NetworkEvent.Connect) { connectTask.Success = true; } if (info.eventType == NetworkEvent.Disconnect) { connectTask.Success = false; } connectTask.IsDone = true; connectTask = null; } return(info.eventType); } payload = default; channel = default; clientId = default; receiveTime = Time.realtimeSinceStartup; return(NetworkEvent.Nothing); }