Example #1
0
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()));
}
Example #2
0
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()));
}