refactor event system
This commit is contained in:
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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) \
|
||||
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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());
|
||||
|
@ -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); });
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user