summaryrefslogtreecommitdiff
path: root/platform/default/sqlite_cache_impl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/sqlite_cache_impl.hpp')
-rw-r--r--platform/default/sqlite_cache_impl.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/platform/default/sqlite_cache_impl.hpp b/platform/default/sqlite_cache_impl.hpp
new file mode 100644
index 0000000000..a194f9e782
--- /dev/null
+++ b/platform/default/sqlite_cache_impl.hpp
@@ -0,0 +1,44 @@
+#ifndef MBGL_STORAGE_DEFAULT_SQLITE_CACHE_IMPL
+#define MBGL_STORAGE_DEFAULT_SQLITE_CACHE_IMPL
+
+#include <mbgl/storage/sqlite_cache.hpp>
+#include <mbgl/util/run_loop.hpp>
+
+namespace mapbox {
+namespace sqlite {
+class Database;
+class Statement;
+}
+}
+
+namespace mbgl {
+
+class SQLiteCache::Impl : public util::RunLoop {
+ friend class util::Thread<SQLiteCache::Impl>;
+
+public:
+ Impl(const std::string &path = ":memory:");
+ ~Impl();
+
+public:
+ void processGet(const Resource& resource, Callback callback);
+ void processPut(const Resource& resource, std::shared_ptr<const Response> response);
+ void processRefresh(const Resource& resource, int64_t expires);
+
+private:
+ void createDatabase();
+ void createSchema();
+
+private:
+ const std::string path;
+ std::unique_ptr<::mapbox::sqlite::Database> db;
+ std::unique_ptr<::mapbox::sqlite::Statement> getStmt;
+ std::unique_ptr<::mapbox::sqlite::Statement> putStmt;
+ std::unique_ptr<::mapbox::sqlite::Statement> refreshStmt;
+ bool schema = false;
+};
+
+
+}
+
+#endif