simplify uv::Context::Exit()
This commit is contained in:
parent
ad7683fd44
commit
62d44dae63
@ -29,14 +29,7 @@ class Context : public subsys::Interface {
|
|||||||
Context(const char* name, Env& env)
|
Context(const char* name, Env& env)
|
||||||
: subsys::Interface(name),
|
: subsys::Interface(name),
|
||||||
logger_(env.GetOr<subsys::Logger>(NullLogger::instance())),
|
logger_(env.GetOr<subsys::Logger>(NullLogger::instance())),
|
||||||
loop_(MakeLoop()),
|
loop_(MakeLoop()) { }
|
||||||
stop_(Make<uvw::async_handle>()) {
|
|
||||||
stop_->unreference();
|
|
||||||
stop_->on<uvw::async_event>([loop = loop_, logger = logger_](auto&, auto&) {
|
|
||||||
loop->stop();
|
|
||||||
logger->Trace("stopped loop iteration");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~Context() noexcept override {
|
~Context() noexcept override {
|
||||||
@ -58,13 +51,8 @@ class Context : public subsys::Interface {
|
|||||||
throw Exception {"failed to allocate libuv resource"};
|
throw Exception {"failed to allocate libuv resource"};
|
||||||
}
|
}
|
||||||
|
|
||||||
// THREAD-SAFE
|
|
||||||
void Exit() noexcept {
|
void Exit() noexcept {
|
||||||
if (0 == stop_->send()) {
|
loop_->stop();
|
||||||
logger_->Info("requested to exit uv loop");
|
|
||||||
} else {
|
|
||||||
logger_->Error("a request to exit is dismissed");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::shared_ptr<uvw::loop>& loop() const noexcept { return loop_; }
|
const std::shared_ptr<uvw::loop>& loop() const noexcept { return loop_; }
|
||||||
@ -84,9 +72,7 @@ class Context : public subsys::Interface {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
const std::shared_ptr<subsys::Logger> logger_;
|
const std::shared_ptr<subsys::Logger> logger_;
|
||||||
|
|
||||||
const std::shared_ptr<uvw::loop> loop_;
|
const std::shared_ptr<uvw::loop> loop_;
|
||||||
const std::shared_ptr<uvw::async_handle> stop_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class MainContext : public Context {
|
class MainContext : public Context {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user