예제 #1
0
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);
                }
            }
        });
예제 #2
0
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);
}
예제 #3
0
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();
}