void LegacyPlayerListener::onDataReady() { QTcpSocket* socket = qobject_cast<QTcpSocket*>(sender()); if (!socket) return; connect( socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()) ); while (socket->canReadLine()) { QString line = QString::fromUtf8( socket->readLine() ); try { PlayerCommandParser parser( line ); QString const id = parser.playerId(); PlayerConnection* connection = 0; if (!m_connections.contains( id )) { connection = m_connections[id] = new PlayerConnection( parser.playerId(), parser.playerName() ); emit newConnection( connection ); } else connection = m_connections[id]; switch (parser.command()) { case CommandBootstrap: qWarning() << "We no longer support Bootstrapping with the LegacyPlayerListener"; break; case CommandTerm: m_connections.remove( id ); // FALL THROUGH default: connection->handleCommand( parser.command(), parser.track() ); break; } socket->write( "OK\n" ); } catch (std::invalid_argument& e) { QString const error = QString::fromUtf8( e.what() ); qWarning() << line << error; QString s = "ERROR: " + error + "\n"; socket->write( s.toUtf8() ); } } socket->close(); }
void PlayerListener::onDataReady() { QLocalSocket* socket = qobject_cast<QLocalSocket*>(sender()); if (!socket) return; while (socket->canReadLine()) { QString const line = QString::fromUtf8( socket->readLine() ); try { PlayerCommandParser parser( line ); QString const id = parser.playerId(); PlayerConnection* connection = 0; if (!m_connections.contains( id )) { connection = m_connections[id] = new PlayerConnection( parser.playerId(), parser.playerName() ); emit newConnection( connection ); } else connection = m_connections[id]; switch (parser.command()) { case CommandBootstrap: emit bootstrapCompleted( parser.playerId() ); break; case CommandTerm: delete connection; m_connections.remove( parser.playerId() ); break; default: connection->handleCommand( parser.command(), parser.track() ); break; } socket->write( "OK\n" ); } catch (std::invalid_argument& e) { qWarning() << e.what(); QString s = "ERROR: " + QString::fromStdString(e.what()) + "\n"; socket->write( s.toUtf8() ); } } }