Revert "Update to 7.40.1"
[platform/upstream/curl.git] / docs / examples / multi-uv.c
index 0c0f8a2..57d712f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -64,13 +64,13 @@ curl_context_t* create_curl_context(curl_socket_t sockfd)
 
 void curl_close_cb(uv_handle_t *handle)
 {
-  curl_context_t *context = (curl_context_t *) handle->data;
+  curl_context_t* context = (curl_context_t*) handle->data;
   free(context);
 }
 
 void destroy_curl_context(curl_context_t *context)
 {
-  uv_close((uv_handle_t *) &context->poll_handle, curl_close_cb);
+  uv_close((uv_handle_t*) &context->poll_handle, curl_close_cb);
 }
 
 
@@ -83,49 +83,18 @@ void add_download(const char *url, int num)
   sprintf(filename, "%d.download", num);
 
   file = fopen(filename, "w");
-  if(!file) {
+  if (file == NULL) {
     fprintf(stderr, "Error opening %s\n", filename);
     return;
   }
 
   handle = curl_easy_init();
   curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);
-  curl_easy_setopt(handle, CURLOPT_PRIVATE, file);
   curl_easy_setopt(handle, CURLOPT_URL, url);
   curl_multi_add_handle(curl_handle, handle);
   fprintf(stderr, "Added download %s -> %s\n", url, filename);
 }
 
-static void check_multi_info(void)
-{
-  int running_handles;
-  char *done_url;
-  CURLMsg *message;
-  int pending;
-  FILE *file;
-
-  while((message = curl_multi_info_read(curl_handle, &pending))) {
-    switch(message->msg) {
-    case CURLMSG_DONE:
-      curl_easy_getinfo(message->easy_handle, CURLINFO_EFFECTIVE_URL,
-                        &done_url);
-      curl_easy_getinfo(message->easy_handle, CURLINFO_PRIVATE, &file);
-      printf("%s DONE\n", done_url);
-
-      curl_multi_remove_handle(curl_handle, message->easy_handle);
-      curl_easy_cleanup(message->easy_handle);
-      if(file) {
-        fclose(file);
-      }
-      break;
-
-    default:
-      fprintf(stderr, "CURLMSG default\n");
-      break;
-    }
-  }
-}
-
 void curl_perform(uv_poll_t *req, int status, int events)
 {
   int running_handles;
@@ -137,17 +106,32 @@ void curl_perform(uv_poll_t *req, int status, int events)
 
   uv_timer_stop(&timeout);
 
-  if(events & UV_READABLE)
+  if (events & UV_READABLE)
     flags |= CURL_CSELECT_IN;
-  if(events & UV_WRITABLE)
+  if (events & UV_WRITABLE)
     flags |= CURL_CSELECT_OUT;
 
-  context = (curl_context_t *) req;
+  context = (curl_context_t*)req;
 
   curl_multi_socket_action(curl_handle, context->sockfd, flags,
                            &running_handles);
 
-  check_multi_info();
+  while ((message = curl_multi_info_read(curl_handle, &pending))) {
+    switch (message->msg) {
+    case CURLMSG_DONE:
+      curl_easy_getinfo(message->easy_handle, CURLINFO_EFFECTIVE_URL,
+                        &done_url);
+      printf("%s DONE\n", done_url);
+
+      curl_multi_remove_handle(curl_handle, message->easy_handle);
+      curl_easy_cleanup(message->easy_handle);
+
+      break;
+    default:
+      fprintf(stderr, "CURLMSG default\n");
+      abort();
+    }
+  }
 }
 
 void on_timeout(uv_timer_t *req, int status)
@@ -155,12 +139,11 @@ void on_timeout(uv_timer_t *req, int status)
   int running_handles;
   curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
                            &running_handles);
-  check_multi_info();
 }
 
 void start_timeout(CURLM *multi, long timeout_ms, void *userp)
 {
-  if(timeout_ms <= 0)
+  if (timeout_ms <= 0)
     timeout_ms = 1; /* 0 means directly call socket_action, but we'll do it in
                        a bit */
   uv_timer_start(&timeout, on_timeout, timeout_ms, 0);
@@ -170,9 +153,9 @@ int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
                   void *socketp)
 {
   curl_context_t *curl_context;
-  if(action == CURL_POLL_IN || action == CURL_POLL_OUT) {
-    if(socketp) {
-      curl_context = (curl_context_t *) socketp;
+  if (action == CURL_POLL_IN || action == CURL_POLL_OUT) {
+    if (socketp) {
+      curl_context = (curl_context_t*) socketp;
     }
     else {
       curl_context = create_curl_context(s);
@@ -180,7 +163,7 @@ int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
     curl_multi_assign(curl_handle, s, (void *) curl_context);
   }
 
-  switch(action) {
+  switch (action) {
   case CURL_POLL_IN:
     uv_poll_start(&curl_context->poll_handle, UV_READABLE, curl_perform);
     break;
@@ -188,7 +171,7 @@ int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
     uv_poll_start(&curl_context->poll_handle, UV_WRITABLE, curl_perform);
     break;
   case CURL_POLL_REMOVE:
-    if(socketp) {
+    if (socketp) {
       uv_poll_stop(&((curl_context_t*)socketp)->poll_handle);
       destroy_curl_context((curl_context_t*) socketp);
       curl_multi_assign(curl_handle, s, NULL);
@@ -205,10 +188,10 @@ int main(int argc, char **argv)
 {
   loop = uv_default_loop();
 
-  if(argc <= 1)
+  if (argc <= 1)
     return 0;
 
-  if(curl_global_init(CURL_GLOBAL_ALL)) {
+  if (curl_global_init(CURL_GLOBAL_ALL)) {
     fprintf(stderr, "Could not init cURL\n");
     return 1;
   }
@@ -219,12 +202,11 @@ int main(int argc, char **argv)
   curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
   curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
 
-  while(argc-- > 1) {
+  while (argc-- > 1) {
     add_download(argv[argc], argc);
   }
 
   uv_run(loop, UV_RUN_DEFAULT);
   curl_multi_cleanup(curl_handle);
-
   return 0;
 }