Exemplo n.º 1
0
void Server::processMessage(QString address, int port, QString message){
//    qDebug() << "\nServer::processMessage()";
    int playerIndex = getPlayerIndex(address, port);
    Q_ASSERT(playerIndex >=0);

    if(networkAnswers[playerIndex].isEmpty()){
        nbNetworkAnswers++;
    }
    else{
        qDebug() << "Server::processMessage() : SUPER WEIRD, player sent first message "
                 << networkAnswers[playerIndex] << " then message " <<  message;
    }
    networkAnswers[playerIndex] = message;
//    qDebug() << "Player " << playerIndex << " : " << message;

    // Send immediate feedback
    switch(waitingForMessage){
    case(WAITING_FOR_MESSAGE::INFO):
        if(rxPlayerName.indexIn(message)>=0){
            emit playerName(playerIndex, rxPlayerName.cap(1));
        }
        if(rxStatusAvailable.indexIn(message) >= 0){
            emit playerAvailable(playerIndex, true);
        }
        else{
            emit playerAvailable(playerIndex, false);
        }
        break;
    case(WAITING_FOR_MESSAGE::START):
        if(rxReady.indexIn(message) >= 0){
            emit playerReady(playerIndex, true);
        }
        else{
            emit playerReady(playerIndex, false);
        }
        break;
    case(WAITING_FOR_MESSAGE::PLAY):
        moves[playerIndex] = message;
        emit outputPlayerMessage(playerIndex, message);
        break;
    case(WAITING_FOR_MESSAGE::DONE):
        if(message != "done"){
            manageError(address, port, QAbstractSocket::UnknownSocketError);
        }
        emit outputPlayerMessage(playerIndex, message);
        break;
    default:
        break;
    }

    //
    if(nbNetworkAnswers == addresses.size()){
        // Finish the job
//        qDebug() << "Server::processMessage() : Got all the messages";
        handleTransition();
    }
}
Exemplo n.º 2
0
Network::Network(QTcpSocket *sock, int id) : mysocket(sock), commandStarted(false), myid(id)
{
    connect(socket(), SIGNAL(readyRead()), this, SLOT(onReceipt()));
    connect(socket(), SIGNAL(disconnected()), this, SIGNAL(disconnected()));
    connect(socket(), SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(manageError(QAbstractSocket::SocketError)));
    /* SO THE SOCKET IS SAFELY DELETED LATER WHEN DISCONNECTED! */
    connect(socket(), SIGNAL(disconnected()), socket(), SLOT(deleteLater()));
    connect(this, SIGNAL(destroyed()), socket(), SLOT(deleteLater()));
}
Exemplo n.º 3
0
void MadNet::run(){
	QObject::connect(&socket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(manageError(QAbstractSocket::SocketError)));
}