From 6006b2dfa81ac8f3d51e33f4f211fce1a884d1f7 Mon Sep 17 00:00:00 2001 From: sima Date: Tue, 12 Dec 2023 09:05:48 -0800 Subject: [PATCH 1/3] boostification of domainmap cpp --- src/cpp/proxy/domainmap.cpp | 23 +++++++++++++---------- src/cpp/proxy/domainmap.h | 3 +++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/cpp/proxy/domainmap.cpp b/src/cpp/proxy/domainmap.cpp index 7853a6af..6ebf0d23 100644 --- a/src/cpp/proxy/domainmap.cpp +++ b/src/cpp/proxy/domainmap.cpp @@ -285,7 +285,7 @@ class DomainMap::Worker : public QObject log_info("routes loaded with %d entries", allRules.count()); - QMetaObject::invokeMethod(this, "changed", Qt::QueuedConnection); + QMetaObject::invokeMethod(this, "doChanged", Qt::QueuedConnection); } // mutex must be locked when calling this method @@ -301,9 +301,8 @@ class DomainMap::Worker : public QObject return true; } -signals: - void started(); - void changed(); + Signal started; + Signal changed; public slots: void start() @@ -316,7 +315,7 @@ public slots: reload(); } - emit started(); + started(); } void fileChanged(const QString &path) @@ -709,6 +708,8 @@ class DomainMap::Thread : public QThread { Q_OBJECT + map startedConnections; + public: QString fileName; Worker *worker; @@ -732,13 +733,13 @@ class DomainMap::Thread : public QThread { worker = new Worker; worker->fileName = fileName; - connect(worker, &Worker::started, this, &Thread::worker_started, Qt::DirectConnection); + startedConnections[worker] = worker->started.connect(boost::bind(&Thread::worker_started, this)); QMetaObject::invokeMethod(worker, "start", Qt::QueuedConnection); exec(); delete worker; } -public slots: +public: void worker_started() { QMutexLocker locker(&m); @@ -750,6 +751,8 @@ class DomainMap::Private : public QObject { Q_OBJECT + map changedConnections; + public: DomainMap *q; Thread *thread; @@ -773,13 +776,13 @@ class DomainMap::Private : public QObject thread->start(); // worker guaranteed to exist after starting - connect(thread->worker, &Worker::changed, this, &Private::doChanged); + changedConnections[thread] = thread->worker->changed.connect(boost::bind(&Private::doChanged, this)); } -public slots: +public: void doChanged() { - emit q->changed(); + q->changed(); } }; diff --git a/src/cpp/proxy/domainmap.h b/src/cpp/proxy/domainmap.h index 1c3f00fd..8e48a773 100644 --- a/src/cpp/proxy/domainmap.h +++ b/src/cpp/proxy/domainmap.h @@ -30,8 +30,11 @@ #include "httpheaders.h" #include "jwt.h" #include +#include +using std::map; using Signal = boost::signals2::signal; +using Connection = boost::signals2::scoped_connection; // this class offers fast access to the routes file. the table is maintained // by a background thread so that file access doesn't cause blocking. From b5d81ae4a30b75f94918d019baa9a03192b0b127 Mon Sep 17 00:00:00 2001 From: sima Date: Tue, 12 Dec 2023 13:40:17 -0800 Subject: [PATCH 2/3] removed conn map --- src/cpp/proxy/domainmap.cpp | 8 ++++---- src/cpp/proxy/domainmap.h | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/cpp/proxy/domainmap.cpp b/src/cpp/proxy/domainmap.cpp index 6ebf0d23..749529b6 100644 --- a/src/cpp/proxy/domainmap.cpp +++ b/src/cpp/proxy/domainmap.cpp @@ -708,7 +708,7 @@ class DomainMap::Thread : public QThread { Q_OBJECT - map startedConnections; + Connection startedConnection; public: QString fileName; @@ -733,7 +733,7 @@ class DomainMap::Thread : public QThread { worker = new Worker; worker->fileName = fileName; - startedConnections[worker] = worker->started.connect(boost::bind(&Thread::worker_started, this)); + startedConnection = worker->started.connect(boost::bind(&Thread::worker_started, this)); QMetaObject::invokeMethod(worker, "start", Qt::QueuedConnection); exec(); delete worker; @@ -751,7 +751,7 @@ class DomainMap::Private : public QObject { Q_OBJECT - map changedConnections; + Connection changedConnection; public: DomainMap *q; @@ -776,7 +776,7 @@ class DomainMap::Private : public QObject thread->start(); // worker guaranteed to exist after starting - changedConnections[thread] = thread->worker->changed.connect(boost::bind(&Private::doChanged, this)); + changedConnection = thread->worker->changed.connect(boost::bind(&Private::doChanged, this)); } public: diff --git a/src/cpp/proxy/domainmap.h b/src/cpp/proxy/domainmap.h index 8e48a773..ddf7d8b2 100644 --- a/src/cpp/proxy/domainmap.h +++ b/src/cpp/proxy/domainmap.h @@ -30,9 +30,7 @@ #include "httpheaders.h" #include "jwt.h" #include -#include -using std::map; using Signal = boost::signals2::signal; using Connection = boost::signals2::scoped_connection; From b57c636b9e9bf42a63c3727ca48367be8d866aec Mon Sep 17 00:00:00 2001 From: sima Date: Wed, 13 Dec 2023 10:27:17 -0800 Subject: [PATCH 3/3] comments addressed --- src/cpp/proxy/domainmap.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/cpp/proxy/domainmap.cpp b/src/cpp/proxy/domainmap.cpp index 749529b6..1006dd9a 100644 --- a/src/cpp/proxy/domainmap.cpp +++ b/src/cpp/proxy/domainmap.cpp @@ -305,6 +305,11 @@ class DomainMap::Worker : public QObject Signal changed; public slots: + void doChanged() + { + changed(); + } + void start() { if(!fileName.isEmpty()) @@ -708,8 +713,6 @@ class DomainMap::Thread : public QThread { Q_OBJECT - Connection startedConnection; - public: QString fileName; Worker *worker; @@ -733,7 +736,7 @@ class DomainMap::Thread : public QThread { worker = new Worker; worker->fileName = fileName; - startedConnection = worker->started.connect(boost::bind(&Thread::worker_started, this)); + Connection startedConnection = worker->started.connect(boost::bind(&Thread::worker_started, this)); QMetaObject::invokeMethod(worker, "start", Qt::QueuedConnection); exec(); delete worker;