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();
private:
static void process_event2(const i_event &evt);
static void process_event(const i_event &evt);
};
} // namespace repertory

View File

@ -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

View File

@ -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<repertory::event_consumer>( \
#name, [this](const i_event &evt) { callback(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)); \
event::name, [this](const i_event &evt) { \
callback(dynamic_cast<const event &>(evt)); \
}))
#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;
#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();
});
}

View File

@ -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();
});
}

View File

@ -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();
});
}

View File

@ -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());

View File

@ -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());

View File

@ -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); });
}