aboutsummaryrefslogtreecommitdiff
path: root/src/InstanceManager.hpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/InstanceManager.hpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/InstanceManager.hpp b/src/InstanceManager.hpp
new file mode 100644
index 0000000..0ef6e08
--- /dev/null
+++ b/src/InstanceManager.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include <QLocalServer>
+#include <QLocalSocket>
+#include <QtCore>
+
+#include "utils.hpp"
+
+class InstanceManager : public QObject {
+ Q_OBJECT
+
+public:
+ InstanceManager();
+ ~InstanceManager() override;
+ void write_open_urls_to_socket(const QStringList &urls);
+ void write_lua_expr_to_socket(const QString &lua_expr);
+ void send_message();
+
+ DEFINE_GETTER(is_server, is_server_mode)
+
+signals:
+ void lua_eval_requested(const QString &lua_expr);
+ void urls_open_requested(const QStringList &urls);
+
+private slots:
+ void handle_new_connection();
+
+protected:
+ bool try_server_connection();
+ void server_init();
+
+private:
+ QLocalServer *server = nullptr;
+ QLocalSocket *socket = nullptr;
+ bool is_server_mode = false;
+
+ // TODO: On windows, \\.\pipe\null-browser
+ const char *socket_path = "/tmp/null-browser-socket.sock";
+};