From: Yedidya Feldblum Date: Fri, 16 Dec 2016 05:21:21 +0000 (-0800) Subject: Always use an EventBaseManager with ScopedEventBaseThread X-Git-Tag: v2016.12.19.00~8 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=536bac289e63feddc096811d2733e26fa16b9ac1;p=folly.git Always use an EventBaseManager with ScopedEventBaseThread Summary: [Folly] Always use an `EventBaseManager` with `ScopedEventBaseThread`. Reviewed By: andriigrynenko Differential Revision: D4336412 fbshipit-source-id: 459a679f8fda0db1ca0a9fdca2f852bb00c5231e --- diff --git a/folly/io/async/ScopedEventBaseThread.cpp b/folly/io/async/ScopedEventBaseThread.cpp index c783c1c8..29fa4522 100644 --- a/folly/io/async/ScopedEventBaseThread.cpp +++ b/folly/io/async/ScopedEventBaseThread.cpp @@ -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(); } diff --git a/folly/io/async/test/ScopedEventBaseThreadTest.cpp b/folly/io/async/test/ScopedEventBaseThreadTest.cpp index 6832f347..6d7ba4c1 100644 --- a/folly/io/async/test/ScopedEventBaseThreadTest.cpp +++ b/folly/io/async/test/ScopedEventBaseThreadTest.cpp @@ -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(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(nullptr); + sebt_eb->runInEventBaseThreadAndWait([&] { ebm_eb = ebm.getEventBase(); }); EXPECT_EQ(uintptr_t(sebt_eb), uintptr_t(ebm_eb)); }