diff options
Diffstat (limited to 'src/mbgl/map/environment.cpp')
-rw-r--r-- | src/mbgl/map/environment.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/mbgl/map/environment.cpp b/src/mbgl/map/environment.cpp new file mode 100644 index 0000000000..ee13d33ea7 --- /dev/null +++ b/src/mbgl/map/environment.cpp @@ -0,0 +1,39 @@ +#include <mbgl/map/environment.hpp> +#include <mbgl/storage/file_source.hpp> + +#include <uv.h> + +#include <cassert> + +namespace mbgl { + +Environment::Environment(FileSource &fs) : fileSource(fs), loop(uv_loop_new()) { +} + +void Environment::setup() { + mapThread = std::this_thread::get_id(); +} + +bool Environment::inMapThread() const { + return std::this_thread::get_id() == mapThread; +} + +void Environment::requestAsync(const Resource &resource, std::function<void(const Response &)> callback) { + fileSource.request(resource, *this, std::move(callback)); +} + +Request *Environment::request(const Resource &resource, std::function<void(const Response &)> callback) { + assert(inMapThread()); + return fileSource.request(resource, loop, *this, std::move(callback)); +} + +void Environment::cancelRequest(Request *req) { + assert(inMapThread()); + fileSource.cancel(req); +} + +void Environment::terminate() { + fileSource.abort(*this); +} + +} |