Exemple #1
0
/**
 * @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);
}
Exemple #2
0
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;
}
Exemple #3
0
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);
}