LocalClient::LocalClient():lastpingtime(QTime::currentTime()) { localtimer.setInterval(PING_INTERVAL); connect(&localtimer, SIGNAL(timeout()), this, SLOT(localTimerCheck())); socket = new TCPSocket; receiver = new MessageReceiver(socket); qRegisterMetaType<PlayersListMessage>("PlayersListMessage"); qRegisterMetaType<ClientConnectMessage>("ClientConnectMessage"); qRegisterMetaType<ServerReadyMessage>("ServerReadyMessage"); qRegisterMetaType<ConnectionAcceptedMessage>("ConnectionAcceptedMessage"); qRegisterMetaType<PingMessage>("PingMessage"); qRegisterMetaType<StartGameMessage>("StartGameMessage"); qRegisterMetaType<RestartGameMessage>("RestartGameMessage"); qRegisterMetaType<TurnMessage>("TurnMessage"); qRegisterMetaType<ClientDisconnectMessage>("ClientDisconnectMessage"); qRegisterMetaType<SurrenderMessage>("SurrenderMessage"); qRegisterMetaType<ChatMessage>("ChatMessage"); connect(receiver, SIGNAL(chatMessageReceive(ChatMessage)), this, SLOT(localChatMessageReceive(ChatMessage))); connect(receiver, SIGNAL(playersListMessageReceive(PlayersListMessage)), this, SLOT(localPlayersListMessageReceive(PlayersListMessage))); connect(receiver, SIGNAL(serverReadyMessageReceive(ServerReadyMessage)), this, SLOT(localServerReadyMessageReceive(ServerReadyMessage))); connect(receiver, SIGNAL(clientConnectMessageReceive(ClientConnectMessage)), this, SLOT(localClientConnectMessageReceive(ClientConnectMessage))); connect(receiver, SIGNAL(clientDisconnectMessageReceive(ClientDisconnectMessage)), this, SLOT(localClientDisconnectMessageReceive(ClientDisconnectMessage))); connect(receiver, SIGNAL(connectionAcceptedMessageReceive(ConnectionAcceptedMessage)), this, SLOT(localConnectionAcceptedMessageReceive(ConnectionAcceptedMessage))); connect(receiver, SIGNAL(pingMessageReceive(PingMessage)), this, SLOT(localPingMessageReceive(PingMessage))); connect(receiver, SIGNAL(startGameMessageReceive(StartGameMessage)), this, SLOT(localStartGameMessageReceive(StartGameMessage))); connect(receiver, SIGNAL(restartGameMessageReceive(RestartGameMessage)), this, SLOT(localRestartGameMessageReceive(RestartGameMessage))); connect(receiver, SIGNAL(turnMessageReceive(TurnMessage)), this, SLOT(localTurnMessageReceive(TurnMessage))); connect(receiver, SIGNAL(surrenderMessageReceive(SurrenderMessage)), this, SLOT(localSurrenderMessageReceive(SurrenderMessage))); connect(socket, SIGNAL(connected()), this, SLOT(localConnected())); connect(socket, SIGNAL(disconnected()), this, SLOT(localDisconnected())); connect(socket, SIGNAL(error()), this, SLOT(localError())); }
void CGProxy::newConnection() { QTcpSocket* newClient = m_LocalServer->nextPendingConnection(); if(m_LocalSocket) { newClient->disconnectFromHost(); return; } while( !m_LocalPackets.empty( ) ) { delete m_LocalPackets.front( ); m_LocalPackets.pop_front( ); } while( !m_RemotePackets.empty( ) ) { delete m_RemotePackets.front( ); m_RemotePackets.pop_front( ); } while( !m_PacketBuffer.empty( ) ) { delete m_PacketBuffer.front( ); m_PacketBuffer.pop_front( ); } newClient->setSocketOption(QAbstractSocket::LowDelayOption, 1); m_TotalPacketsReceivedFromLocal = 0; m_TotalPacketsReceivedFromRemote = 0; m_LastConnectionAttemptTime = 0; m_GameIsReliable = false; m_GameStarted = false; m_LeaveGameSent = false; m_ActionReceived = false; m_Synchronized = true; m_ReconnectPort = 0; m_PID = 255; m_ChatPID = 255; m_ReconnectKey = 0; m_NumEmptyActions = 0; m_NumEmptyActionsUsed = 0; m_LastAckTime = 0; m_LastActionTime = 0; m_LocalSocket = newClient; connect(m_LocalSocket, SIGNAL(disconnected()), this, SLOT(localDisconnected())); connect(m_LocalSocket, SIGNAL(disconnected()), m_LocalSocket, SLOT(deleteLater())); connect(m_LocalSocket, SIGNAL(readyRead()), this, SLOT(readLocalPackets())); }