diff options
Diffstat (limited to 'src/mbgl/storage/sqlite_cache.hpp')
-rw-r--r-- | src/mbgl/storage/sqlite_cache.hpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mbgl/storage/sqlite_cache.hpp b/src/mbgl/storage/sqlite_cache.hpp new file mode 100644 index 0000000000..6e79d44a33 --- /dev/null +++ b/src/mbgl/storage/sqlite_cache.hpp @@ -0,0 +1,44 @@ +#ifndef MBGL_STORAGE_DEFAULT_SQLITE_CACHE +#define MBGL_STORAGE_DEFAULT_SQLITE_CACHE + +#include <mbgl/storage/file_cache.hpp> + +#include <string> + +namespace mbgl { + +namespace util { +template <typename T> class Thread; +} // namespace util + +class SQLiteCache : public FileCache { +public: + SQLiteCache(const std::string &path = ":memory:"); + ~SQLiteCache() override; + + void setMaximumCacheSize(uint64_t size); + void setMaximumCacheEntrySize(uint64_t size); + + // FileCache API + std::unique_ptr<WorkRequest> get(const Resource &resource, Callback callback) override; + void put(const Resource &resource, std::shared_ptr<const Response> response, Hint hint) override; + + class Impl; + +private: + const std::unique_ptr<util::Thread<Impl>> thread; +}; + +class SharedSQLiteCache : util::noncopyable { +public: + static std::shared_ptr<SQLiteCache> get(const std::string &path = ":memory:"); + +private: + SharedSQLiteCache() {} + + static std::weak_ptr<SQLiteCache> masterPtr; +}; + +} // namespace mbgl + +#endif |