void SingleApplication::newConnection() { while (m_localServer->hasPendingConnections()) { QLocalSocket *conn = m_localServer->nextPendingConnection(); connect(conn, &QLocalSocket::readyRead, this, [=]() { QString message = LocalCommunication::receive(conn); if (message == "NEW_CLIENT") { LocalCommunication::send("HELLO", conn); } else if (message == "ARGS") { LocalCommunication::send("OK", conn); QByteArray ar = LocalCommunication::receiveRaw(conn); QDataStream args(&ar, QIODevice::ReadOnly); QStringList argList; args >> argList; if (!argList.isEmpty()) { QString workingDir = argList.takeFirst(); emit receivedArguments(workingDir, argList); } } });
void SingleApplication::receive(const QString& workingDirectory, const QStringList& arguments) { if (arguments.isEmpty()) { qWarning() << "Invalid DBus message with empty arguments parameter received."; return; } emit receivedArguments(workingDirectory, arguments); }
void SingleInstance::readyRead() { QString argsString = _socket->readAll(); QVariantList argsList; for (auto line : argsString.split("\n")) { if (line != "") argsList.append(line); } qDebug() << "Received args:"; for (auto line : argsList) qDebug() << " " << line; emit receivedArguments(argsList); _socket->deleteLater(); }