From 646528bc53c37950b556be825de1ba9fa5303be3 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 24 Aug 2016 09:36:11 -0700 Subject: [core] Simplify Thread::invokeSync (#6128) --- platform/default/default_file_source.cpp | 2 +- src/mbgl/util/thread.hpp | 14 +++----------- test/util/thread_local.cpp | 6 +++--- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index 9d369210f8..6a94fa3866 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -156,7 +156,7 @@ void DefaultFileSource::setAccessToken(const std::string& accessToken) { } std::string DefaultFileSource::getAccessToken() const { - return thread->invokeSync(&Impl::getAccessToken); + return thread->invokeSync(&Impl::getAccessToken); } std::unique_ptr DefaultFileSource::request(const Resource& resource, Callback callback) { diff --git a/src/mbgl/util/thread.hpp b/src/mbgl/util/thread.hpp index cd90e08049..31a56a4834 100644 --- a/src/mbgl/util/thread.hpp +++ b/src/mbgl/util/thread.hpp @@ -44,23 +44,15 @@ public: } // Invoke object->fn(args...) in the runloop thread, and wait for the result. - template - R invokeSync(Fn fn, Args&&... args) { + template + auto invokeSync(Fn fn, Args&&... args) { + using R = std::result_of_t; std::packaged_task task(std::bind(fn, object, args...)); std::future future = task.get_future(); loop->invoke(std::move(task)); return future.get(); } - // Invoke object->fn(args...) in the runloop thread, and wait for it to complete. - template - void invokeSync(Fn fn, Args&&... args) { - std::packaged_task task(std::bind(fn, object, args...)); - std::future future = task.get_future(); - loop->invoke(std::move(task)); - future.get(); - } - private: Thread(const Thread&) = delete; Thread(Thread&&) = delete; diff --git a/test/util/thread_local.cpp b/test/util/thread_local.cpp index d2ec7f70a5..4ee7042580 100644 --- a/test/util/thread_local.cpp +++ b/test/util/thread_local.cpp @@ -43,9 +43,9 @@ TEST(ThreadLocalStorage, Basic) { Thread thread2(context, &number2); Thread thread3(context, &number3); - EXPECT_EQ(number1, thread1.invokeSync(&TestThread::getNumber)); - EXPECT_EQ(number2, thread2.invokeSync(&TestThread::getNumber)); - EXPECT_EQ(number3, thread3.invokeSync(&TestThread::getNumber)); + EXPECT_EQ(number1, thread1.invokeSync(&TestThread::getNumber)); + EXPECT_EQ(number2, thread2.invokeSync(&TestThread::getNumber)); + EXPECT_EQ(number3, thread3.invokeSync(&TestThread::getNumber)); } TEST(ThreadLocalStorage, NotSetReturnsNull) { -- cgit v1.2.1