diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-04-05 10:33:38 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-04-05 10:34:22 +0530 |
| commit | 7e09b35b008f58809ac56184a4f83ab875c038e0 (patch) | |
| tree | 3f7acdb64d2b063760fa22529826aa418e249750 /src/InstanceManager.hpp | |
| parent | 8eda8343757b2161535388387b0525e0fd56f569 (diff) | |
| download | null-browser-7e09b35b008f58809ac56184a4f83ab875c038e0.tar.gz null-browser-7e09b35b008f58809ac56184a4f83ab875c038e0.zip | |
Add instance manager for enforcing single instance
Diffstat (limited to 'src/InstanceManager.hpp')
| -rw-r--r-- | src/InstanceManager.hpp | 39 |
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"; +}; |
