Commit 536bac28 authored by Yedidya Feldblum's avatar Yedidya Feldblum Committed by Facebook Github Bot

Always use an EventBaseManager with ScopedEventBaseThread

Summary: [Folly] Always use an `EventBaseManager` with `ScopedEventBaseThread`.

Reviewed By: andriigrynenko

Differential Revision: D4336412

fbshipit-source-id: 459a679f8fda0db1ca0a9fdca2f852bb00c5231e
parent a83ba29c
......@@ -24,19 +24,15 @@ using namespace std;
namespace folly {
static void run(EventBaseManager* ebm, EventBase* eb) {
if (ebm) {
ebm->setEventBase(eb, false);
}
ebm->setEventBase(eb, false);
CHECK_NOTNULL(eb)->loopForever();
if (ebm) {
ebm->clearEventBase();
}
ebm->clearEventBase();
}
ScopedEventBaseThread::ScopedEventBaseThread(
bool autostart,
EventBaseManager* ebm) :
ebm_(ebm) {
EventBaseManager* ebm)
: ebm_(ebm ? ebm : EventBaseManager::get()) {
if (autostart) {
start();
}
......
......@@ -77,13 +77,20 @@ TEST_F(ScopedEventBaseThreadTest, self_move) {
ASSERT_TRUE(done.timed_wait(seconds(1)));
}
TEST_F(ScopedEventBaseThreadTest, manager) {
TEST_F(ScopedEventBaseThreadTest, default_manager) {
auto ebm = EventBaseManager::get();
ScopedEventBaseThread sebt;
auto sebt_eb = sebt.getEventBase();
auto ebm_eb = static_cast<EventBase*>(nullptr);
sebt_eb->runInEventBaseThreadAndWait([&] { ebm_eb = ebm->getEventBase(); });
EXPECT_EQ(uintptr_t(sebt_eb), uintptr_t(ebm_eb));
}
TEST_F(ScopedEventBaseThreadTest, custom_manager) {
EventBaseManager ebm;
ScopedEventBaseThread sebt(&ebm);
auto sebt_eb = sebt.getEventBase();
auto ebm_eb = (EventBase*)nullptr;
sebt_eb->runInEventBaseThreadAndWait([&] {
ebm_eb = ebm.getEventBase();
});
auto ebm_eb = static_cast<EventBase*>(nullptr);
sebt_eb->runInEventBaseThreadAndWait([&] { ebm_eb = ebm.getEventBase(); });
EXPECT_EQ(uintptr_t(sebt_eb), uintptr_t(ebm_eb));
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment