#pragma once #include #include #include namespace mbgl { namespace util { class AsyncTask; } // namespace util class NetworkStatus { public: enum class Status : uint8_t { Online, Offline, }; static Status Get(); static void Set(Status); static void Reachable(); static void Subscribe(util::AsyncTask* async); static void Unsubscribe(util::AsyncTask* async); private: static std::atomic online; static std::mutex mtx; static std::unordered_set observers; }; } // namespace mbgl