ResourceHandleManager.h [plain text]
#ifndef ResourceHandleManager_h
#define ResourceHandleManager_h
#include "Frame.h"
#include "Timer.h"
#include "ResourceHandleClient.h"
#include <curl/curl.h>
namespace WebCore {
class ResourceHandleList {
public:
ResourceHandleList(ResourceHandle* job, ResourceHandleList* next)
: m_job(job)
, m_next(next)
, m_removed(false)
{}
ResourceHandleList* next() const { return m_next; }
ResourceHandle* job() const { return m_job; }
void setRemoved(bool removed) { m_removed = removed; }
bool removed() const { return m_removed; }
private:
ResourceHandle* m_job;
ResourceHandleList* m_next;
bool m_removed;
};
class ResourceHandleManager {
public:
static ResourceHandleManager* sharedInstance();
void add(ResourceHandle*);
void cancel(ResourceHandle*);
void setCookieJarFileName(const char* cookieJarFileName);
void setupPOST(ResourceHandle*);
void setupPUT(ResourceHandle*);
private:
ResourceHandleManager();
~ResourceHandleManager();
void downloadTimerCallback(Timer<ResourceHandleManager>*);
void removeFromCurl(ResourceHandle*);
bool removeScheduledJob(ResourceHandle*);
void startJob(ResourceHandle*);
bool startScheduledJobs();
Timer<ResourceHandleManager> m_downloadTimer;
CURLM* m_curlMultiHandle;
CURLSH* m_curlShareHandle;
char* m_cookieJarFileName;
char m_curlErrorBuffer[CURL_ERROR_SIZE];
ResourceHandleList* m_resourceHandleListHead;
};
}
#endif