Files
MapLibreParticleLab/include/mbgl/storage/sqlite_store.hpp

48 lines
1.0 KiB
C++

#ifndef MBGL_STORAGE_SQLITE_STORE
#define MBGL_STORAGE_SQLITE_STORE
#include <mbgl/storage/file_source.hpp>
#include <mbgl/storage/response.hpp>
#include <uv.h>
#include <string>
typedef struct uv_worker_s uv_worker_t;
namespace mapbox {
namespace sqlite {
class Database;
}
}
namespace mbgl {
class SQLiteStore {
public:
SQLiteStore(uv_loop_t *loop, const std::string &path);
~SQLiteStore();
typedef void (*GetCallback)(std::unique_ptr<Response> &&entry, void *ptr);
void get(const std::string &path, GetCallback cb, void *ptr);
void put(const std::string &path, ResourceType type, const Response &entry);
void updateExpiration(const std::string &path, int64_t expires);
private:
void createSchema();
void closeDatabase();
static void runGet(uv_work_t *req);
static void runPut(uv_work_t *req);
static void deliverResult(uv_work_t *req, int status);
private:
const unsigned long thread_id;
util::ptr<mapbox::sqlite::Database> db;
uv_worker_t *worker = nullptr;
};
}
#endif