#include #include #include #include #include namespace mbgl { namespace util { class AsyncTask::Impl { public: Impl(std::function&& fn) : async(reinterpret_cast(RunLoop::getLoopHandle()), [this] { runTask(); }) , task(std::move(fn)) { } void maySend() { async.send(); } void runTask() { task(); } void unref() { async.unref(); } private: uv::async async; std::function task; }; AsyncTask::AsyncTask(std::function&& fn) : impl(std::make_unique(std::move(fn))) { } AsyncTask::~AsyncTask() { } void AsyncTask::send() { impl->maySend(); } void AsyncTask::unref() { impl->unref(); } } }