refactor event system

This commit is contained in:
2025-01-24 08:10:33 -06:00
parent 33e9208190
commit ad5a1cd5ff
9 changed files with 15 additions and 19 deletions

View File

@ -37,7 +37,7 @@ public:
~console_consumer(); ~console_consumer();
private: private:
static void process_event2(const i_event &evt); static void process_event(const i_event &evt);
}; };
} // namespace repertory } // namespace repertory

View File

@ -40,7 +40,7 @@ private:
5ULL}; 5ULL};
private: private:
static void process_event2(const i_event &evt); static void process_event(const i_event &evt);
}; };
} // namespace repertory } // namespace repertory

View File

@ -127,14 +127,10 @@ private: \
#define E_CONSUMER_RELEASE() event_consumers_.clear() #define E_CONSUMER_RELEASE() event_consumers_.clear()
#define E_SUBSCRIBE(name, callback) \ #define E_SUBSCRIBE(event, callback) \
event_consumers_.emplace_back(std::make_shared<repertory::event_consumer>( \ event_consumers_.emplace_back(std::make_shared<repertory::event_consumer>( \
#name, [this](const i_event &evt) { callback(evt); })) event::name, [this](const i_event &evt) { \
callback(dynamic_cast<const event &>(evt)); \
#define E_SUBSCRIBE_EXACT(name, callback) \
event_consumers_.emplace_back(std::make_shared<repertory::event_consumer>( \
#name, [this](const i_event &evt) { \
callback(dynamic_cast<const name &>(evt)); \
})) }))
#define E_SUBSCRIBE_ALL(callback) \ #define E_SUBSCRIBE_ALL(callback) \

View File

@ -92,7 +92,7 @@ fuse_base::fuse_base(app_config &config) : config_(config) {
fuse_ops_.flag_reserved = 0; fuse_ops_.flag_reserved = 0;
#endif // FUSE_USE_VERSION < 30 #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(); std::thread([this]() { this->shutdown(); }).detach();
}); });
} }

View File

@ -105,7 +105,7 @@ remote_winfsp_drive::remote_winfsp_drive(app_config &config,
config_(config), config_(config),
lock_(lock), lock_(lock),
factory_(std::move(factory)) { 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(); std::thread([this]() { this->shutdown(); }).detach();
}); });
} }

View File

@ -156,7 +156,7 @@ auto winfsp_drive::winfsp_service::OnStop() -> NTSTATUS {
winfsp_drive::winfsp_drive(app_config &config, lock_data &lock, winfsp_drive::winfsp_drive(app_config &config, lock_data &lock,
i_provider &provider) i_provider &provider)
: provider_(provider), config_(config), lock_(lock) { : 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(); std::thread([this]() { this->shutdown(); }).detach();
}); });
} }

View File

@ -62,14 +62,14 @@ console_consumer::console_consumer(event_level level) {
set_level(level); set_level(level);
E_SUBSCRIBE_ALL(process_event2); E_SUBSCRIBE_ALL(process_event);
E_SUBSCRIBE_EXACT(event_level_changed, E_SUBSCRIBE(event_level_changed,
[](auto &&event) { set_level(event.new_level); }); [](auto &&event) { set_level(event.new_level); });
} }
console_consumer::~console_consumer() { E_CONSUMER_RELEASE(); } 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()) { switch (evt.get_event_level()) {
case event_level::critical: case event_level::critical:
spdlog::get("console")->critical(evt.get_single_line()); spdlog::get("console")->critical(evt.get_single_line());

View File

@ -66,14 +66,14 @@ logging_consumer::logging_consumer(event_level level,
set_level(level); set_level(level);
E_SUBSCRIBE_ALL(process_event2); E_SUBSCRIBE_ALL(process_event);
E_SUBSCRIBE_EXACT(event_level_changed, E_SUBSCRIBE(event_level_changed,
[](auto &&event) { set_level(event.new_level); }); [](auto &&event) { set_level(event.new_level); });
} }
logging_consumer::~logging_consumer() { E_CONSUMER_RELEASE(); } 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()) { switch (evt.get_event_level()) {
case event_level::critical: case event_level::critical:
spdlog::get("file")->critical(evt.get_single_line()); spdlog::get("file")->critical(evt.get_single_line());

View File

@ -65,7 +65,7 @@ file_manager::file_manager(app_config &config, i_provider &provider)
return; return;
} }
E_SUBSCRIBE_EXACT(file_upload_completed, E_SUBSCRIBE(file_upload_completed,
[this](auto &&event) { this->upload_completed(event); }); [this](auto &&event) { this->upload_completed(event); });
} }