void Input::do_work()
{
CURL *curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &Input::curl_callback_thunk);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);
- curl_easy_perform(curl);
+
+ while (!should_stop) {
+ curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &Input::curl_callback_thunk);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);
+ curl_easy_perform(curl);
+ if (!should_stop) {
+ printf("Transfer ended, waiting 0.2 seconds and restarting...\n");
+ usleep(200000);
+ }
+ }
}
size_t Input::curl_callback_thunk(char *ptr, size_t size, size_t nmemb, void *userdata)
// should we have many blocks, but these routines don't need to be too efficient
// anyway.
pending_data.erase(pending_data.begin(), pending_data.begin() + sizeof(metacube_block_header) + size);
+ has_metacube_header = false;
}
}