Files
MapLibreParticleLab/include/mbgl/storage/file_source.hpp
Konstantin Käfer 9e44c0eae8 add reachability
2014-09-29 14:02:42 +02:00

56 lines
1.3 KiB
C++

#ifndef MBGL_STORAGE_FILE_SOURCE
#define MBGL_STORAGE_FILE_SOURCE
#include <mbgl/storage/resource_type.hpp>
#include <mbgl/storage/request.hpp>
#include <string>
#include <unordered_map>
#include <functional>
typedef struct uv_loop_s uv_loop_t;
typedef struct uv_messenger_s uv_messenger_t;
namespace mbgl {
class BaseRequest;
class SQLiteStore;
class FileSource {
private:
FileSource(const FileSource &) = delete;
FileSource(FileSource &&) = delete;
FileSource& operator=(const FileSource &) = delete;
FileSource& operator=(FileSource &&) = delete;
public:
FileSource(uv_loop_t *loop, const std::string &path);
~FileSource();
public:
// Stores and retrieves the base path/URL for relative requests
void setBase(const std::string &value);
const std::string &getBase() const;
std::unique_ptr<Request> request(ResourceType type, const std::string &url);
void prepare(std::function<void()> fn);
void retryAllPending();
private:
const unsigned long thread_id;
// Stores a URL that is used as a base for loading resources with relative path.
std::string base;
std::unordered_map<std::string, std::weak_ptr<BaseRequest>> pending;
util::ptr<SQLiteStore> store;
uv_loop_t *loop = nullptr;
uv_messenger_t *queue = nullptr;
};
}
#endif