diff options
Diffstat (limited to '')
| -rw-r--r-- | src/InstanceManager.hpp | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/InstanceManager.hpp b/src/InstanceManager.hpp index 0ef6e08..47d4932 100644 --- a/src/InstanceManager.hpp +++ b/src/InstanceManager.hpp @@ -6,15 +6,21 @@ #include "utils.hpp" +class ServerMsg { +public: + virtual void write_to_socket(QIODevice *socket) = 0; +}; + class InstanceManager : public QObject { Q_OBJECT public: - InstanceManager(); + InstanceManager() = default; ~InstanceManager() override; - void write_open_urls_to_socket(const QStringList &urls); - void write_lua_expr_to_socket(const QString &lua_expr); - void send_message(); + + void initialize(); + void write_message(ServerMsg &msg); + void close(); DEFINE_GETTER(is_server, is_server_mode) @@ -37,3 +43,25 @@ private: // TODO: On windows, \\.\pipe\null-browser const char *socket_path = "/tmp/null-browser-socket.sock"; }; + +class LuaExprServerMsg : public ServerMsg { +public: + const QString &expr; + LuaExprServerMsg(auto expr) : expr(expr) {} + + void write_to_socket(QIODevice *socket) override { + socket->write(("lua " + expr).toStdString().c_str()); + socket->write("\n"); + } +}; + +class UrlServerMsg : public ServerMsg { +public: + const QStringList &urls; + UrlServerMsg(auto urls) : urls(urls) {} + + void write_to_socket(QIODevice *socket) override { + socket->write(urls.join(" ").toStdString().c_str()); + socket->write("\n"); + } +}; |
