#ifndef MBGL_STORAGE_DEFAULT_REQUEST #define MBGL_STORAGE_DEFAULT_REQUEST #include #include #include #include #include #include #include typedef struct uv_loop_s uv_loop_t; namespace uv { class async; } namespace mbgl { class Response; class Request : private util::noncopyable { public: using Callback = std::function; Request(const Resource &resource, uv_loop_t *loop, Callback callback); public: // May be called from any thread. void notify(const std::shared_ptr &response); void destruct(); // May be called only from the thread the Request was created in. void cancel(); private: ~Request(); void invoke(); void notifyCallback(); private: std::unique_ptr async; struct Canceled; std::unique_ptr canceled; Callback callback; std::shared_ptr response; public: const Resource resource; }; } #endif