MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
file_source.hpp
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include <mapbox/compatibility/value.hpp>
9 
10 #include <functional>
11 #include <memory>
12 
13 namespace mbgl {
14 
15 class AsyncRequest;
16 class Resource;
17 
18 // TODO: Rename to ResourceProviderType
19 enum FileSourceType : uint8_t {
21  // TODO: split to separate types
22  // - Cache for fast KV store (FASTER, LevelDB, RocksDB)
23  // - Database for read-only offline use-cases
31 };
32 
33 // TODO: Rename to ResourceProvider to avoid confusion with
34 // GeoJSONSource, RasterSource, VectorSource, CustomGeometrySource and other *Sources.
35 class FileSource {
36 public:
37  FileSource& operator=(const FileSource&) = delete;
38  virtual ~FileSource() = default;
39 
40  using Callback = std::function<void (Response)>;
41 
47  virtual std::unique_ptr<AsyncRequest> request(const Resource&, Callback) = 0;
48 
52  //
53  // NOLINTNEXTLINE(performance-unnecessary-value-param)
54  virtual void forward(const Resource&, const Response&, std::function<void()>) {}
55 
60  virtual bool supportsCacheOnlyRequests() const { return false; }
61 
63  virtual bool canRequest(const Resource&) const = 0;
64 
71  virtual void pause() {}
72 
79  virtual void resume() {}
80 
82  virtual void setProperty(const std::string&, const mapbox::base::Value&){};
84  virtual mapbox::base::Value getProperty(const std::string&) const { return {}; };
85 
87  virtual void setResourceTransform(ResourceTransform) {} // NOLINT(performance-unnecessary-value-param)
88 
91 
92  virtual void setClientOptions(ClientOptions) = 0;
94 
95 protected:
96  FileSource() = default;
97 };
98 
99 // Properties that may be supported by online file sources:
100 
103 constexpr const char* API_KEY_KEY = "api-tkey";
104 
107 constexpr const char* API_BASE_URL_KEY = "api-base-url";
108 
111 constexpr const char* MAX_CONCURRENT_REQUESTS_KEY = "max-concurrent-requests";
112 
113 // Properties that may be supported by database file sources:
114 
117 constexpr const char* READ_ONLY_MODE_KEY = "read-only-mode";
118 
119 } // namespace mbgl
Holds values for client options.
virtual void forward(const Resource &, const Response &, std::function< void()>)
Definition: file_source.hpp:54
virtual void setResourceTransform(ResourceTransform)
When supported, sets the modifier of the requested resources.
Definition: file_source.hpp:87
FileSource & operator=(const FileSource &)=delete
virtual bool supportsCacheOnlyRequests() const
Definition: file_source.hpp:60
FileSource()=default
std::function< void(Response)> Callback
Definition: file_source.hpp:40
virtual mapbox::base::Value getProperty(const std::string &) const
Generic getter method.
Definition: file_source.hpp:84
virtual void resume()
Definition: file_source.hpp:79
virtual void pause()
Definition: file_source.hpp:71
virtual ResourceOptions getResourceOptions()=0
virtual void setProperty(const std::string &, const mapbox::base::Value &)
Generic setter method.
Definition: file_source.hpp:82
virtual bool canRequest(const Resource &) const =0
Checks whether a resource could be requested from this file source.
virtual ~FileSource()=default
virtual void setClientOptions(ClientOptions)=0
virtual std::unique_ptr< AsyncRequest > request(const Resource &, Callback)=0
virtual ClientOptions getClientOptions()=0
virtual void setResourceOptions(ResourceOptions)=0
Holds values for resource options.
std::unique_ptr< Expression > string(std::unique_ptr< Expression >, std::unique_ptr< Expression > def=nullptr)
Definition: actor.hpp:15
constexpr const char * READ_ONLY_MODE_KEY
constexpr const char * MAX_CONCURRENT_REQUESTS_KEY
constexpr const char * API_KEY_KEY
mapbox::base::Value Value
Definition: feature.hpp:11
constexpr const char * API_BASE_URL_KEY
FileSourceType
Definition: file_source.hpp:19
@ FileSystem
Definition: file_source.hpp:25
@ Mbtiles
Definition: file_source.hpp:27
@ Network
Definition: file_source.hpp:26
@ Database
Definition: file_source.hpp:24
@ ResourceLoader
Definition: file_source.hpp:28