mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2026-04-10 06:11:54 +10:00
Some checks failed
Build / Nix (push) Has been cancelled
Build / Nix-1 (push) Has been cancelled
Build / Nix-2 (push) Has been cancelled
Build / Nix-3 (push) Has been cancelled
Build / Nix-4 (push) Has been cancelled
Build / Nix-5 (push) Has been cancelled
Build / Nix-6 (push) Has been cancelled
Build / Nix-7 (push) Has been cancelled
Build / Nix-8 (push) Has been cancelled
Build / Nix-9 (push) Has been cancelled
Build / Nix-10 (push) Has been cancelled
Build / Nix-11 (push) Has been cancelled
Build / Nix-12 (push) Has been cancelled
Build / Nix-13 (push) Has been cancelled
Build / Nix-14 (push) Has been cancelled
Build / Nix-15 (push) Has been cancelled
Build / Nix-16 (push) Has been cancelled
Build / Nix-17 (push) Has been cancelled
Build / Nix-18 (push) Has been cancelled
Build / Nix-19 (push) Has been cancelled
Build / Nix-20 (push) Has been cancelled
Build / Nix-21 (push) Has been cancelled
Build / Nix-22 (push) Has been cancelled
Build / Nix-23 (push) Has been cancelled
Build / Nix-24 (push) Has been cancelled
Build / Nix-25 (push) Has been cancelled
Build / Nix-26 (push) Has been cancelled
Build / Nix-27 (push) Has been cancelled
Build / Nix-28 (push) Has been cancelled
Build / Nix-29 (push) Has been cancelled
Build / Nix-30 (push) Has been cancelled
Build / Nix-31 (push) Has been cancelled
Build / Nix-32 (push) Has been cancelled
Build / Nix-33 (push) Has been cancelled
Build / Archlinux (push) Has been cancelled
Lint / Lint (push) Has been cancelled
101 lines
2.3 KiB
C++
101 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include <qcontainerfwd.h>
|
|
#include <qflags.h>
|
|
#include <qobject.h>
|
|
#include <qtmetamacros.h>
|
|
#include <qtypes.h>
|
|
|
|
#include "../ipc/ipc.hpp"
|
|
|
|
namespace qs::io::ipc::comm {
|
|
|
|
struct QueryMetadataCommand {
|
|
QString target;
|
|
QString name;
|
|
|
|
void exec(qs::ipc::IpcServerConnection* conn) const;
|
|
};
|
|
|
|
DEFINE_SIMPLE_DATASTREAM_OPS(QueryMetadataCommand, data.target, data.name);
|
|
|
|
struct StringCallCommand {
|
|
QString target;
|
|
QString function;
|
|
QVector<QString> arguments;
|
|
|
|
void exec(qs::ipc::IpcServerConnection* conn) const;
|
|
};
|
|
|
|
DEFINE_SIMPLE_DATASTREAM_OPS(StringCallCommand, data.target, data.function, data.arguments);
|
|
|
|
void handleMsg(qs::ipc::IpcServerConnection* conn);
|
|
int queryMetadata(qs::ipc::IpcClient* client, const QString& target, const QString& name);
|
|
|
|
int callFunction(
|
|
qs::ipc::IpcClient* client,
|
|
const QString& target,
|
|
const QString& function,
|
|
const QVector<QString>& arguments
|
|
);
|
|
|
|
struct StringPropReadCommand {
|
|
QString target;
|
|
QString property;
|
|
|
|
void exec(qs::ipc::IpcServerConnection* conn) const;
|
|
};
|
|
|
|
DEFINE_SIMPLE_DATASTREAM_OPS(StringPropReadCommand, data.target, data.property);
|
|
|
|
int getProperty(qs::ipc::IpcClient* client, const QString& target, const QString& property);
|
|
|
|
struct SignalListenCommand {
|
|
QString target;
|
|
QString signal;
|
|
|
|
void exec(qs::ipc::IpcServerConnection* conn);
|
|
};
|
|
|
|
DEFINE_SIMPLE_DATASTREAM_OPS(SignalListenCommand, data.target, data.signal);
|
|
|
|
int listenToSignal(
|
|
qs::ipc::IpcClient* client,
|
|
const QString& target,
|
|
const QString& signal,
|
|
bool once
|
|
);
|
|
|
|
struct NoCurrentGeneration: std::monostate {};
|
|
struct TargetNotFound: std::monostate {};
|
|
struct EntryNotFound: std::monostate {};
|
|
|
|
struct SignalResponse {
|
|
QString response;
|
|
};
|
|
|
|
DEFINE_SIMPLE_DATASTREAM_OPS(SignalResponse, data.response);
|
|
|
|
using SignalListenResponse = std::
|
|
variant<std::monostate, NoCurrentGeneration, TargetNotFound, EntryNotFound, SignalResponse>;
|
|
|
|
class RemoteSignalListener: public QObject {
|
|
Q_OBJECT;
|
|
|
|
public:
|
|
explicit RemoteSignalListener(qs::ipc::IpcServerConnection* conn, SignalListenCommand command);
|
|
|
|
~RemoteSignalListener() override;
|
|
|
|
Q_DISABLE_COPY_MOVE(RemoteSignalListener);
|
|
|
|
private slots:
|
|
void onSignal(const QString& target, const QString& signal, const QString& value);
|
|
void onConnDestroyed();
|
|
|
|
private:
|
|
qs::ipc::IpcServerConnection* conn;
|
|
SignalListenCommand command;
|
|
};
|
|
|
|
} // namespace qs::io::ipc::comm
|