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