00001 #ifndef BCResourceHandleManagerCURL_H_ 00002 #define BCResourceHandleManagerCURL_H_ 00003 00004 #include "BIResourceHandleManager.h" 00005 #include "../JavaScriptCore/wtf/HashSet.h" 00006 #include "Timer.h" 00007 #include <curl/curl.h> 00008 00009 using BAL::BIResourceHandleManager; 00010 using BAL::BIResourceHandle; 00011 00012 namespace BC 00013 { 00014 00018 class BCResourceHandleManagerCURL : public BIResourceHandleManager 00019 { 00020 public: 00021 BCResourceHandleManagerCURL(); 00022 ~BCResourceHandleManagerCURL(); 00023 00024 virtual void add(BIResourceHandle* job); 00025 virtual bool contains(BIResourceHandle* job); 00026 virtual void cancel(BIResourceHandle* job); 00027 virtual CURLcode runImmediately(BIResourceHandle* job); 00028 void remove(BIResourceHandle* job); 00029 00030 void setCookieJarFileName(const char* cookieJarFileName); 00031 char* cookieJarFileName() { return m_cookieJarFileName; } 00032 00033 00034 private: 00035 void downloadTimerCallback(WebCore::Timer<BCResourceHandleManagerCURL>* timer); 00036 00037 WebCore::Timer<BCResourceHandleManagerCURL> m_downloadTimer; 00038 00039 CURLM* m_curlMultiHandle; // FIXME: never freed 00040 CURLSH* m_curlShareHandle; // FIXME: never freed 00041 00042 char* m_cookieJarFileName; // FIXME: never freed 00043 00044 char m_curlErrorBuffer[CURL_ERROR_SIZE]; 00045 }; 00046 00047 } 00048 00049 #endif /*ResourceHandleManagerCURL_H_*/