diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2014-06-19 15:38:02 -0700 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2014-06-19 15:38:02 -0700 |
commit | c83a8a951cce9b7ed541c293993f708f720bf28d (patch) | |
tree | e2c92a5778de9829eef0b03bb49bca4acdba2396 /src/CurlTask.cc | |
parent | 948dd878a4060bac728f0af1cf7c0d0048ddace0 (diff) |
Finishing up basic curl integration and adding a basic DownloadTask.
Diffstat (limited to 'src/CurlTask.cc')
-rw-r--r-- | src/CurlTask.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/CurlTask.cc b/src/CurlTask.cc index 5ff8b97..c43210f 100644 --- a/src/CurlTask.cc +++ b/src/CurlTask.cc @@ -10,6 +10,11 @@ Balau::CurlTask::CurlTask() { curl_easy_setopt(m_curlHandle, CURLOPT_DEBUGDATA, this); } +Balau::CurlTask::~CurlTask() { + unregisterCurlHandle(); + curl_easy_cleanup(m_curlHandle); +} + size_t Balau::CurlTask::writeFunctionStatic(char * ptr, size_t size, size_t nmemb, void * userdata) { CurlTask * curlTask = (CurlTask *) userdata; return curlTask->writeFunction(ptr, size, nmemb); @@ -26,6 +31,24 @@ int Balau::CurlTask::debugFunctionStatic(CURL * easy, curl_infotype info, char * return curlTask->debugFunction(info, str, str_len); } -void Balau::CurlTask::curlDone(CURLcode result) { +Balau::DownloadTask::DownloadTask(const Balau::String & url) { + curl_easy_setopt(m_curlHandle, CURLOPT_URL, url.to_charp()); + m_name.set("DownloadTask(%s)", url.to_charp()); +} + +void Balau::DownloadTask::Do() { + if (m_state) + return; + + m_state = 1; + registerCurlHandle(); + waitFor(&m_evt); + yield(); +} +void Balau::DownloadTask::curlDone(CURLcode result) { + m_curlResult = result; + curl_easy_getinfo(m_curlHandle, CURLINFO_RESPONSE_CODE, &m_responseCode); + m_evt.doSignal(); + m_done = true; } |