summaryrefslogtreecommitdiff
path: root/src/mbgl/map/environment.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/environment.cpp')
-rw-r--r--src/mbgl/map/environment.cpp39
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);
+}
+
+}