bool ClientLobbyRoomProtocol::notifyEventAsynchronous(Event* event) { assert(m_setup); // assert that the setup exists if (event->getType() == EVENT_TYPE_MESSAGE) { const NetworkString &data = event->data(); assert(data.size()); // assert that data isn't empty uint8_t message_type = data[0]; if (message_type == 0x03 || message_type == 0x06) return false; // don't treat the event event->removeFront(1); Log::info("ClientLobbyRoomProtocol", "Asynchronous message of type %d", message_type); if (message_type == 0x01) // new player connected newPlayer(event); else if (message_type == 0x02) // player disconnected disconnectedPlayer(event); else if (message_type == 0x04) // start race startGame(event); else if (message_type == 0x05) // start selection phase startSelection(event); else if (message_type == 0x80) // connection refused connectionRefused(event); else if (message_type == 0x81) // connection accepted connectionAccepted(event); else if (message_type == 0x82) // kart selection refused kartSelectionRefused(event); else if (message_type == 0xc0) // vote for major mode playerMajorVote(event); else if (message_type == 0xc1) // vote for race count playerRaceCountVote(event); else if (message_type == 0xc2) // vote for minor mode playerMinorVote(event); else if (message_type == 0xc3) // vote for track playerTrackVote(event); else if (message_type == 0xc4) // vote for reversed mode playerReversedVote(event); else if (message_type == 0xc5) // vote for laps playerLapsVote(event); return true; } // message else if (event->getType() == EVENT_TYPE_CONNECTED) { return true; } // connection else if (event->getType() == EVENT_TYPE_DISCONNECTED) // means we left essentially { NetworkManager::getInstance()->removePeer(m_server); m_server = NULL; NetworkManager::getInstance()->disconnected(); m_listener->requestTerminate(this); NetworkManager::getInstance()->reset(); // probably the same as m_server NetworkManager::getInstance()->removePeer(event->getPeer()); return true; } // disconnection return false; } // notifyEventAsynchronous
void MainWindow::startListenTcp(){ QThread *thr=new QThread(this); m_rpsvr =new RpSvrThread(); m_rpsvr->init(m_strTCPHost,m_strTCPPort.toInt(),"*"); m_rpsvr->moveToThread(thr); connect(thr,SIGNAL(started()),m_rpsvr,SLOT(startWork())); connect(m_rpsvr,SIGNAL(dataChanged()),this,SLOT(slUpdateTcpData())); connect(m_rpsvr,SIGNAL(connectionEstablished()),this,SLOT(slTcpEstablished())); connect(m_rpsvr,SIGNAL(connectionRefused(QString)),this,SLOT(slTcpRefused(QString))); thr->start(); }
void Communication::initTcpCommunication(Controller *pController) { this->controller = pController; qDebug() << "Init TCP communication"; qDebug() << "Connection to " << this->controller->getName() << " " << this->controller->getIpAddr() << " " << this->controller->getPort(); this->tcpClient = new TcpClient(this->controller->getIpAddr(),this->controller->getPort()); connect(this->tcpClient, SIGNAL(connectionRefused()), this, SLOT(catchTcpConnectionRefused())); connect(this->tcpClient, SIGNAL(connectionEstablished()), this, SLOT(catchTcpConnectionEstablished())); connect(this->tcpClient, SIGNAL(connectionClosed()), this, SLOT(catchTcpConnectionClosed())); this->tcpClient->connection(); }
void Communication::close() { if (this->udp != NULL) { this->udp->closeConnection(); } if (this->tcpClient != NULL) { this->tcpClient->closeConnection(); disconnect(this->tcpClient, SIGNAL(connectionRefused()), 0, 0); disconnect(this->tcpClient, SIGNAL(connectionEstablished()), 0, 0); disconnect(this->tcpClient, SIGNAL(connectionClosed()), 0, 0); this->msleep(500); } }
bool ClientLobbyRoomProtocol::notifyEventAsynchronous(Event* event) { assert(m_setup); // assert that the setup exists if (event->getType() == EVENT_TYPE_MESSAGE) { NetworkString &data = event->data(); assert(data.size()); // assert that data isn't empty uint8_t message_type = data.getUInt8(); Log::info("ClientLobbyRoomProtocol", "Asynchronous message of type %d", message_type); switch(message_type) { case LE_NEW_PLAYER_CONNECTED: newPlayer(event); break; case LE_PLAYER_DISCONNECTED : disconnectedPlayer(event); break; case LE_START_RACE: startGame(event); break; case LE_START_SELECTION: startSelection(event); break; case LE_CONNECTION_REFUSED: connectionRefused(event); break; case LE_CONNECTION_ACCEPTED: connectionAccepted(event); break; case LE_KART_SELECTION_REFUSED: kartSelectionRefused(event); break; case LE_VOTE_MAJOR : playerMajorVote(event); break; case LE_VOTE_RACE_COUNT: playerRaceCountVote(event); break; case LE_VOTE_MINOR: playerMinorVote(event); break; case LE_VOTE_TRACK: playerTrackVote(event); break; case LE_VOTE_REVERSE: playerReversedVote(event); break; case LE_VOTE_LAPS: playerLapsVote(event); break; } // switch return true; } // message else if (event->getType() == EVENT_TYPE_DISCONNECTED) { // This means we left essentially. // We can't delete STKHost from this thread, since the main // thread might still test if STKHost exists and then call // the ProtocolManager, which might already have been deleted. // So only signal that STKHost should exit, which will be tested // from the main thread. STKHost::get()->requestShutdown(); return true; } // disconnection return false; } // notifyEventAsynchronous