/** * @brief Emits a broadcastRecieved method with Datagram Header and Data as parameter. * @param pHeader Datagram Header specifying the type, user and address of datagram source. * @param lpszData Actual data which is Received. */ void wavrNetwork::udp_receiveBroadcast(DatagramHeader* pHeader, QString* lpszData) { emit broadcastReceived(pHeader, lpszData); }
void KMessageClient::processMessage (const QByteArray &msg) { if (d->isLocked) { // must NOT happen, since we check in processIncomingMessage as well as in processFirstMessage d->delayedMessages.append(msg); return; } QBuffer in_buffer; in_buffer.setData(msg); in_buffer.open (QIODevice::ReadOnly); QDataStream in_stream (&in_buffer); bool unknown = false; quint32 messageID; in_stream >> messageID; switch (messageID) { case KMessageServer::MSG_BROADCAST: { quint32 clientID; in_stream >> clientID; emit broadcastReceived (in_buffer.readAll(), clientID); } break; case KMessageServer::MSG_FORWARD: { quint32 clientID; QList <quint32> receivers; in_stream >> clientID >> receivers; emit forwardReceived (in_buffer.readAll(), clientID, receivers); } break; case KMessageServer::ANS_CLIENT_ID: { bool old_admin = isAdmin(); quint32 clientID; in_stream >> clientID; d->connection->setId (clientID); if (old_admin != isAdmin()) emit adminStatusChanged (isAdmin()); } break; case KMessageServer::ANS_ADMIN_ID: { bool old_admin = isAdmin(); in_stream >> d->adminID; if (old_admin != isAdmin()) emit adminStatusChanged (isAdmin()); } break; case KMessageServer::ANS_CLIENT_LIST: { in_stream >> d->clientList; } break; case KMessageServer::EVNT_CLIENT_CONNECTED: { quint32 id; in_stream >> id; if (d->clientList.contains (id)) qCWarning(GAMES_PRIVATE_KGAME) << ": Adding a client that already existed!"; else d->clientList.append (id); emit eventClientConnected (id); } break; case KMessageServer::EVNT_CLIENT_DISCONNECTED: { quint32 id; qint8 broken; in_stream >> id >> broken; if (!d->clientList.contains (id)) qCWarning(GAMES_PRIVATE_KGAME) << ": Removing a client that doesn't exist!"; else d->clientList.removeAll (id); emit eventClientDisconnected (id, bool (broken)); } break; default: unknown = true; } if (!unknown && !in_buffer.atEnd()) qCWarning(GAMES_PRIVATE_KGAME) << ": Extra data received for message ID" << messageID; emit serverMessageReceived (msg, unknown); if (unknown) qCWarning(GAMES_PRIVATE_KGAME) << ": received unknown message ID" << messageID; }
void wavrUdpNetwork::parseDatagram(QString* lpszAddress, QByteArray& datagram) { wavrTrace::write("UDP datagram received from " + *lpszAddress); DatagramHeader* pHeader = new DatagramHeader(DT_Broadcast, QString(), *lpszAddress); QString szData = QString::fromUtf8(datagram.data(), datagram.length()); emit broadcastReceived(pHeader, &szData); }