summaryrefslogtreecommitdiff
path: root/src/CurlTask.cc
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2014-06-19 15:38:02 -0700
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2014-06-19 15:38:02 -0700
commitc83a8a951cce9b7ed541c293993f708f720bf28d (patch)
treee2c92a5778de9829eef0b03bb49bca4acdba2396 /src/CurlTask.cc
parent948dd878a4060bac728f0af1cf7c0d0048ddace0 (diff)
Finishing up basic curl integration and adding a basic DownloadTask.
Diffstat (limited to 'src/CurlTask.cc')
-rw-r--r--src/CurlTask.cc25
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;
}