From ad5a1cd5ff3722071b04b0c8141324f5ce136260 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Fri, 24 Jan 2025 08:10:33 -0600 Subject: [PATCH] refactor event system --- .../include/events/consumers/console_consumer.hpp | 2 +- .../include/events/consumers/logging_consumer.hpp | 2 +- repertory/librepertory/include/events/event_system.hpp | 10 +++------- repertory/librepertory/src/drives/fuse/fuse_base.cpp | 2 +- .../drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp | 2 +- .../librepertory/src/drives/winfsp/winfsp_drive.cpp | 2 +- .../src/events/consumers/console_consumer.cpp | 6 +++--- .../src/events/consumers/logging_consumer.cpp | 6 +++--- .../librepertory/src/file_manager/file_manager.cpp | 2 +- 9 files changed, 15 insertions(+), 19 deletions(-) diff --git a/repertory/librepertory/include/events/consumers/console_consumer.hpp b/repertory/librepertory/include/events/consumers/console_consumer.hpp index fa2cc311..4b677be8 100644 --- a/repertory/librepertory/include/events/consumers/console_consumer.hpp +++ b/repertory/librepertory/include/events/consumers/console_consumer.hpp @@ -37,7 +37,7 @@ public: ~console_consumer(); private: - static void process_event2(const i_event &evt); + static void process_event(const i_event &evt); }; } // namespace repertory diff --git a/repertory/librepertory/include/events/consumers/logging_consumer.hpp b/repertory/librepertory/include/events/consumers/logging_consumer.hpp index 24303720..603f2ea1 100644 --- a/repertory/librepertory/include/events/consumers/logging_consumer.hpp +++ b/repertory/librepertory/include/events/consumers/logging_consumer.hpp @@ -40,7 +40,7 @@ private: 5ULL}; private: - static void process_event2(const i_event &evt); + static void process_event(const i_event &evt); }; } // namespace repertory diff --git a/repertory/librepertory/include/events/event_system.hpp b/repertory/librepertory/include/events/event_system.hpp index e5da4255..cefdfe14 100644 --- a/repertory/librepertory/include/events/event_system.hpp +++ b/repertory/librepertory/include/events/event_system.hpp @@ -127,14 +127,10 @@ private: \ #define E_CONSUMER_RELEASE() event_consumers_.clear() -#define E_SUBSCRIBE(name, callback) \ +#define E_SUBSCRIBE(event, callback) \ event_consumers_.emplace_back(std::make_shared( \ - #name, [this](const i_event &evt) { callback(evt); })) - -#define E_SUBSCRIBE_EXACT(name, callback) \ - event_consumers_.emplace_back(std::make_shared( \ - #name, [this](const i_event &evt) { \ - callback(dynamic_cast(evt)); \ + event::name, [this](const i_event &evt) { \ + callback(dynamic_cast(evt)); \ })) #define E_SUBSCRIBE_ALL(callback) \ diff --git a/repertory/librepertory/src/drives/fuse/fuse_base.cpp b/repertory/librepertory/src/drives/fuse/fuse_base.cpp index c28b9b6d..54b51252 100644 --- a/repertory/librepertory/src/drives/fuse/fuse_base.cpp +++ b/repertory/librepertory/src/drives/fuse/fuse_base.cpp @@ -92,7 +92,7 @@ fuse_base::fuse_base(app_config &config) : config_(config) { fuse_ops_.flag_reserved = 0; #endif // FUSE_USE_VERSION < 30 - E_SUBSCRIBE_EXACT(unmount_requested, [this](const unmount_requested &) { + E_SUBSCRIBE(unmount_requested, [this](const unmount_requested &) { std::thread([this]() { this->shutdown(); }).detach(); }); } diff --git a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp index 27e82417..dba4f2f7 100644 --- a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp @@ -105,7 +105,7 @@ remote_winfsp_drive::remote_winfsp_drive(app_config &config, config_(config), lock_(lock), factory_(std::move(factory)) { - E_SUBSCRIBE_EXACT(unmount_requested, [this](const unmount_requested &) { + E_SUBSCRIBE(unmount_requested, [this](const unmount_requested &) { std::thread([this]() { this->shutdown(); }).detach(); }); } diff --git a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp index 84f91444..f24cc820 100644 --- a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp @@ -156,7 +156,7 @@ auto winfsp_drive::winfsp_service::OnStop() -> NTSTATUS { winfsp_drive::winfsp_drive(app_config &config, lock_data &lock, i_provider &provider) : provider_(provider), config_(config), lock_(lock) { - E_SUBSCRIBE_EXACT(unmount_requested, [this](const unmount_requested &) { + E_SUBSCRIBE(unmount_requested, [this](const unmount_requested &) { std::thread([this]() { this->shutdown(); }).detach(); }); } diff --git a/repertory/librepertory/src/events/consumers/console_consumer.cpp b/repertory/librepertory/src/events/consumers/console_consumer.cpp index 7663b2bb..3e293fe0 100644 --- a/repertory/librepertory/src/events/consumers/console_consumer.cpp +++ b/repertory/librepertory/src/events/consumers/console_consumer.cpp @@ -62,14 +62,14 @@ console_consumer::console_consumer(event_level level) { set_level(level); - E_SUBSCRIBE_ALL(process_event2); - E_SUBSCRIBE_EXACT(event_level_changed, + E_SUBSCRIBE_ALL(process_event); + E_SUBSCRIBE(event_level_changed, [](auto &&event) { set_level(event.new_level); }); } console_consumer::~console_consumer() { E_CONSUMER_RELEASE(); } -void console_consumer::process_event2(const i_event &evt) { +void console_consumer::process_event(const i_event &evt) { switch (evt.get_event_level()) { case event_level::critical: spdlog::get("console")->critical(evt.get_single_line()); diff --git a/repertory/librepertory/src/events/consumers/logging_consumer.cpp b/repertory/librepertory/src/events/consumers/logging_consumer.cpp index 97942a55..2995f0cd 100644 --- a/repertory/librepertory/src/events/consumers/logging_consumer.cpp +++ b/repertory/librepertory/src/events/consumers/logging_consumer.cpp @@ -66,14 +66,14 @@ logging_consumer::logging_consumer(event_level level, set_level(level); - E_SUBSCRIBE_ALL(process_event2); - E_SUBSCRIBE_EXACT(event_level_changed, + E_SUBSCRIBE_ALL(process_event); + E_SUBSCRIBE(event_level_changed, [](auto &&event) { set_level(event.new_level); }); } logging_consumer::~logging_consumer() { E_CONSUMER_RELEASE(); } -void logging_consumer::process_event2(const i_event &evt) { +void logging_consumer::process_event(const i_event &evt) { switch (evt.get_event_level()) { case event_level::critical: spdlog::get("file")->critical(evt.get_single_line()); diff --git a/repertory/librepertory/src/file_manager/file_manager.cpp b/repertory/librepertory/src/file_manager/file_manager.cpp index 207d6b42..ae7d1da3 100644 --- a/repertory/librepertory/src/file_manager/file_manager.cpp +++ b/repertory/librepertory/src/file_manager/file_manager.cpp @@ -65,7 +65,7 @@ file_manager::file_manager(app_config &config, i_provider &provider) return; } - E_SUBSCRIBE_EXACT(file_upload_completed, + E_SUBSCRIBE(file_upload_completed, [this](auto &&event) { this->upload_completed(event); }); }