X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=input.cpp;h=de7252a3fda672682d15eb1fae2a821852e259f1;hp=fd71d4072fa64fbd30eb0d584b9b0f0217f01b2a;hb=300fecae0b66a632ffee1a291522d62c840a268c;hpb=62d560b67de3a922bc26ef5c0c2a72a9a09e7905 diff --git a/input.cpp b/input.cpp index fd71d40..de7252a 100644 --- a/input.cpp +++ b/input.cpp @@ -18,10 +18,11 @@ #include "mutexlock.h" #include "input.h" #include "server.h" +#include "serverpool.h" using namespace std; -extern Server *servers; +extern ServerPool *servers; Input::Input(const string &stream_id, const string &url) : stream_id(stream_id), @@ -62,13 +63,15 @@ void Input::do_work() { CURL *curl = curl_easy_init(); - for ( ;; ) { + 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); - printf("Transfer ended, waiting 0.2 seconds and restarting...\n"); - usleep(200000); + if (!should_stop) { + printf("Transfer of '%s' ended, waiting 0.2 seconds and restarting...\n", url.c_str()); + usleep(200000); + } } } @@ -136,6 +139,7 @@ void Input::curl_callback(char *ptr, size_t bytes) // 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; } } @@ -143,13 +147,9 @@ void Input::process_block(const char *data, uint32_t size, uint32_t flags) { if (flags & METACUBE_FLAGS_HEADER) { string header(data, data + size); - for (int i = 0; i < NUM_SERVERS; ++i) { - servers[i].set_header(stream_id, header); - } + servers->set_header(stream_id, header); } else { - for (int i = 0; i < NUM_SERVERS; ++i) { - servers[i].add_data(stream_id, data, size); - } + servers->add_data(stream_id, data, size); } }