pleyo.com

/src/trunk2/BAL/Implementations/Network/CURL/BCResourceHandleCURL.h

Go to the documentation of this file.
00001 #ifndef BCResourceHandleCURL_H_
00002 #define BCResourceHandleCURL_H_
00003 
00004 #include "BALConfiguration.h"
00005 #include "../Common/BCResourceHandleCommonImplementation.h"
00006 #include "BIResourceHandle.h"
00007 #include "BTFormData.h"
00008 #include "BTLogHelper.h"
00009 #include "CString.h"
00010 #include <curl/curl.h>
00011 #include "DeprecatedString.h"
00012 #include "PlatformString.h"
00013 #include <SharedBuffer.h>
00014 #include "StringHash.h"
00015 #include "Timer.h"
00016 #include <Vector.h>
00017 #include <wtf/HashMap.h>
00018 #include "BIObserver.h"
00019 
00020 class KURL;
00021 
00022 using WebCore::CString;
00023 using WebCore::DeprecatedString;
00024 using WebCore::FormData;
00025 using WebCore::SharedBuffer;
00026 using WebCore::String;
00027 using BAL::BIObserver;
00028 
00029 namespace BC {
00030 
00034     class BCResourceHandleCURL : public BAL::BIObserver, public BAL::BIResourceHandle, public BCResourceHandleCommonImplementation {
00035 public:
00036     BCResourceHandleCURL(const ResourceRequest&, ResourceHandleClient*, bool defersLoading, bool shouldContentSniff, bool mightDownloadFromHandle);
00037 
00038     virtual ~BCResourceHandleCURL();
00039 
00040     virtual KURL url() const { return m_request.url(); }
00041     virtual WebCore::String method() const { return m_request.httpMethod(); }
00042     virtual PassRefPtr<FormData> postData() const { return m_request.httpBody(); }
00043     // solve ambiguities of these 3 methods to BCResourceHandleCommonImplementation
00044     virtual ResourceHandleClient* client() const { return BCResourceHandleCommonImplementation::client(); }
00045     virtual void setClient(ResourceHandleClient* client) { BCResourceHandleCommonImplementation::setClient(client); }
00046     virtual const ResourceRequest& request() const { return BCResourceHandleCommonImplementation::request(); }
00047     virtual const HTTPHeaderMap& requestHeaders() const { return m_request.httpHeaderFields(); }
00048 
00049     CURL* handle() { return m_handle; }
00050     void setHandle( CURL* a ) { m_handle = a; }
00051     const char* getURL() { return m_url; }
00052     void setURL(const char* url);
00053     void setHeaders(struct curl_slist* headers) { m_customHeaders = headers; }
00054 
00055     bool loadsBlocked();
00056     void clearAuthentication();
00057     void cancel();
00058     PassRefPtr<WebCore::SharedBuffer> bufferedData();
00059     void setDefersLoading(bool defers);
00060 
00061     void  setupPUT();
00062     void  setupPOST();
00063     void  processMessage(CURLMsg* msg);
00064     size_t write(void* ptr, size_t size, size_t nmemb);
00065     size_t header(char* ptr, size_t size, size_t nmemb);
00066     
00072     void observe(const String&, const String&);
00073     
00074 private:
00075     void  finish();
00076     Vector<char> runImmediately(ResourceResponse& response);
00077     
00082     void checkAndSendCookies(KURL url = "");
00083 
00084 protected:
00085     CURL* m_handle;
00086     char* m_url;
00087     struct curl_slist* m_customHeaders;
00092      bool m_useSimple;
00096      Vector<char> m_resultData;
00097      struct curl_slist* m_customHeader;
00098      struct curl_slist* m_customPostHeader;
00099      struct curl_httppost* m_filePost;
00100      Vector<char> m_postBytes;
00101      Vector<CString> m_cstrings;
00102      ResourceResponse m_response;
00103      ResourceError m_error;
00104      bool m_sentResponse;
00105      bool m_loading;
00106 
00107 };
00108 
00109 }
00110 
00111 #endif // BCResourceHandleCURL_H_

Generated on Wed Nov 21 20:04:16 2007 for Origyn Web Browser by Doxygen 1.5.3

pleyo.com
pleyo.com