event/BlockingCall: always use DeferredMonitor internally
There is no advantage of using EventLoop::AddCall(), now that DeferredMonitor is thread-safe.
This commit is contained in:
parent
a357d84dce
commit
d2a4f64fd6
@ -28,9 +28,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
class BlockingCallMonitor final
|
class BlockingCallMonitor final
|
||||||
#ifdef USE_GLIB_EVENTLOOP
|
|
||||||
: DeferredMonitor
|
: DeferredMonitor
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
const std::function<void()> f;
|
const std::function<void()> f;
|
||||||
|
|
||||||
@ -40,26 +38,13 @@ class BlockingCallMonitor final
|
|||||||
bool done;
|
bool done;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
#ifdef USE_INTERNAL_EVENTLOOP
|
|
||||||
BlockingCallMonitor(EventLoop &loop, std::function<void()> &&_f)
|
|
||||||
:f(std::move(_f)), done(false) {
|
|
||||||
loop.AddCall([this](){
|
|
||||||
this->DoRun();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_GLIB_EVENTLOOP
|
|
||||||
BlockingCallMonitor(EventLoop &_loop, std::function<void()> &&_f)
|
BlockingCallMonitor(EventLoop &_loop, std::function<void()> &&_f)
|
||||||
:DeferredMonitor(_loop), f(std::move(_f)), done(false) {}
|
:DeferredMonitor(_loop), f(std::move(_f)), done(false) {}
|
||||||
#endif
|
|
||||||
|
|
||||||
void Run() {
|
void Run() {
|
||||||
#ifdef USE_GLIB_EVENTLOOP
|
|
||||||
assert(!done);
|
assert(!done);
|
||||||
|
|
||||||
Schedule();
|
Schedule();
|
||||||
#endif
|
|
||||||
|
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
while (!done)
|
while (!done)
|
||||||
@ -67,17 +52,8 @@ public:
|
|||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_GLIB_EVENTLOOP
|
|
||||||
private:
|
private:
|
||||||
virtual void RunDeferred() override {
|
virtual void RunDeferred() override {
|
||||||
DoRun();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_INTERNAL_EVENTLOOP
|
|
||||||
public:
|
|
||||||
#endif
|
|
||||||
void DoRun() {
|
|
||||||
assert(!done);
|
assert(!done);
|
||||||
|
|
||||||
f();
|
f();
|
||||||
|
Loading…
Reference in New Issue
Block a user