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.hpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/platform/default/sqlite_cache_impl.hpp b/platform/default/sqlite_cache_impl.hpp
index f557666e3f..be2db5df43 100644
--- a/platform/default/sqlite_cache_impl.hpp
+++ b/platform/default/sqlite_cache_impl.hpp
@@ -18,23 +18,47 @@ public:
explicit Impl(const std::string &path = ":memory:");
~Impl();
+ void setMaximumCacheSize(uint64_t size);
+ void setMaximumCacheEntrySize(uint64_t size);
+
void get(const Resource&, Callback);
void put(const Resource& resource, std::shared_ptr<const Response> response);
void refresh(const Resource& resource, Seconds expires);
private:
+ void initializeDatabase();
+
+ int cachePageSize();
+
+ uint64_t cacheHardSize();
+ uint64_t cacheSoftSize();
+
+ uint64_t softSize = 0;
+ bool softSizeDirty = true;
+
+ bool needsPruning();
+ void pruneEntries();
+
void createDatabase();
void createSchema();
+ int pageSize = 0;
+
+ uint64_t maximumCacheSize;
+ uint64_t maximumCacheEntrySize;
+
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;
+ std::unique_ptr<::mapbox::sqlite::Statement> countStmt;
+ std::unique_ptr<::mapbox::sqlite::Statement> freeStmt;
+ std::unique_ptr<::mapbox::sqlite::Statement> pruneStmt;
+ std::unique_ptr<::mapbox::sqlite::Statement> accessedStmt;
bool schema = false;
};
-
-}
+} // namespace mbgl
#endif