summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/image_tile_source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/tile/image_tile_source.cpp')
-rw-r--r--src/mbgl/tile/image_tile_source.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mbgl/tile/image_tile_source.cpp b/src/mbgl/tile/image_tile_source.cpp
new file mode 100644
index 0000000000..e552c0e315
--- /dev/null
+++ b/src/mbgl/tile/image_tile_source.cpp
@@ -0,0 +1,25 @@
+#include <mbgl/tile/image_tile_source.hpp>
+#include <mbgl/tile/raster_tile_data.hpp>
+#include <mbgl/storage/file_source.hpp>
+
+namespace mbgl {
+
+ImageTileSource::ImageTileSource(RasterTileData& tileData_,
+ const Resource& resource_,
+ FileSource& fileSource_)
+ : RasterTileSource(tileData_), resource(resource_), fileSource(fileSource_) {
+ request = fileSource.request(resource, [this](Response res) {
+ if (res.error) {
+ tileData.setData(std::make_exception_ptr(std::runtime_error(res.error->message)),
+ nullptr, res.modified, res.expires);
+ } else if (res.notModified) {
+ return;
+ } else if (res.noContent) {
+ tileData.setData(nullptr, nullptr, res.modified, res.expires);
+ } else {
+ tileData.setData(nullptr, res.data, res.modified, res.expires);
+ }
+ });
+}
+
+} // namespace mbgl