CurlCacheManager.h [plain text]
#ifndef CurlCacheManager_h
#define CurlCacheManager_h
#include "CurlCacheEntry.h"
#include "ResourceHandle.h"
#include "ResourceResponse.h"
#include <wtf/HashMap.h>
#include <wtf/ListHashSet.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class CurlCacheManager {
public:
static CurlCacheManager& getInstance();
void setCacheDirectory(const String&);
const String& cacheDirectory() { return m_cacheDir; }
void setStorageSizeLimit(size_t);
bool isCached(const String&) const;
HTTPHeaderMap& requestHeaders(const String&); bool getCachedResponse(const String& url, ResourceResponse&);
void didReceiveResponse(ResourceHandle&, ResourceResponse&);
void didReceiveData(ResourceHandle&, const char*, size_t); void didFinishLoading(ResourceHandle&);
void didFail(ResourceHandle&);
void addCacheEntryClient(const String& url, ResourceHandle* job);
void removeCacheEntryClient(const String& url, ResourceHandle* job);
private:
CurlCacheManager();
~CurlCacheManager();
CurlCacheManager(CurlCacheManager const&);
void operator=(CurlCacheManager const&);
bool m_disabled;
String m_cacheDir;
HashMap<String, std::unique_ptr<CurlCacheEntry>> m_index;
ListHashSet<String> m_LRUEntryList;
size_t m_currentStorageSize;
size_t m_storageSizeLimit;
void saveIndex();
void loadIndex();
void makeRoomForNewEntry();
void saveResponseHeaders(const String&, ResourceResponse&);
void invalidateCacheEntry(const String&);
void readCachedData(const String&, ResourceHandle*, ResourceResponse&);
};
}
#endif // CurlCacheManager_h