private void ParseClientReadyPacket(Packet packet, NetworkConnection clientConnection) { ServerStage.ClientInitializationUpdate(clientConnection); NetworkEventPayload.ServerClientReadyPayload payload = new NetworkEventPayload.ServerClientReadyPayload(); ServerStage.EnqueueNetworkEvent(ServerStage.EVENT_CLIENTREADY, clientConnection, payload); }
private void ParseClientDisconnectPacket(Packet packet, NetworkConnection clientConnection) { ServerStage.EnqueueNetworkEvent(ServerStage.EVENT_CLIENTDISCONNECTED, clientConnection, new NetworkEventPayload.ServerClientDisconnectPayload()); for (int i = 0; i < clientConnections.Length; i++) { if (clientConnections[i] == clientConnection) { objectsManager.pendingMessagesOutboundTargeted.Remove(clientConnections[i]); objectsManager.pendingMessagesOutboundTargetedHP.Remove(clientConnections[i]); clientConnections[i] = null; break; } } }
private void ParseChallengeResponsePacket(Packet packet, NetworkConnection clientConnection) { PacketChallengeResponse response = (PacketChallengeResponse)packet; if (Array.IndexOf(clientConnections, clientConnection) > -1) { return; } if (!pendingConnections.Contains(clientConnection)) { return; } AddConnectionToSlot(clientConnection, GetEmptyServerSlotIndex()); SendConnectionConfirmation(clientConnection); NetworkEventPayload.ServerClientConnectPayload payload = CreateConnectedEventFromChallengeResponse(response); ServerStage.EnqueueNetworkEvent(ServerStage.EVENT_CLIENTCONNECTED, clientConnection, payload); }
private void CheckTimeoutConnections() { for (int i = 0; i < clientConnections.Length; i++) { if (clientConnections[i] == null) { continue; } if ((DateTime.Now - clientConnections[i].timestamp).Seconds > TIMEOUT_SEC) { NetworkEventPayload.ServerClientDisconnectPayload payload = new NetworkEventPayload.ServerClientDisconnectPayload(); ServerStage.EnqueueNetworkEvent(ServerStage.EVENT_CLIENTDISCONNECTED, clientConnections[i], payload); objectsManager.pendingMessagesOutboundTargeted.Remove(clientConnections[i]); objectsManager.pendingMessagesOutboundTargetedHP.Remove(clientConnections[i]); clientConnections[i] = null; sentPacketRecorder.ClearPacketsForConnection(clientConnections[i]); } } }