aboutsummaryrefslogtreecommitdiff
path: root/src/InstanceManager.hpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/InstanceManager.hpp36
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");
+ }
+};