]> granicus.if.org Git - curl/commitdiff
updated test programs to use the API as it currently works
authorDaniel Stenberg <daniel@haxx.se>
Wed, 4 Jan 2006 14:11:35 +0000 (14:11 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 4 Jan 2006 14:11:35 +0000 (14:11 +0000)
hiper/hiper.c
hiper/shiper.c

index 6114b548c89bfe7537588cf90a3ecc7dd0549a73..0cfa7bba03a34f86dd1cb1d5b45eb9805effd2ff 100644 (file)
@@ -296,7 +296,7 @@ int main(int argc, char **argv)
     curl_easy_setopt(e, CURLOPT_URL, conns[i].url);
     curl_easy_setopt(e, CURLOPT_WRITEFUNCTION, writecallback);
     curl_easy_setopt(e, CURLOPT_WRITEDATA, &conns[i]);
-#if 0
+#if 1
     curl_easy_setopt(e, CURLOPT_VERBOSE, 1);
 #endif
     curl_easy_setopt(e, CURLOPT_ERRORBUFFER, conns[i].error);
@@ -319,6 +319,7 @@ int main(int argc, char **argv)
   while(still_running == num_total) {
     struct timeval timeout;
     int rc; /* select() return code */
+    long timeout_ms;
 
     fd2_set fdread;
     fd2_set fdwrite;
@@ -329,9 +330,11 @@ int main(int argc, char **argv)
     FD2_ZERO(&fdwrite);
     FD2_ZERO(&fdexcep);
 
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 0;
-    timeout.tv_usec = 50000;
+    curl_multi_timeout(multi_handle, &timeout_ms);
+
+    /* set timeout to wait */
+    timeout.tv_sec = timeout_ms/1000;
+    timeout.tv_usec = (timeout_ms%1000)*1000;
 
     /* get file descriptors from the transfers */
     curl_multi_fdset(multi_handle,
index feb52a7eb45afa94ca3e8e41dc6292b63a83ed5f..37fc0b321cd4937f8d36d3f9d128d479f24c1c4b 100644 (file)
@@ -124,19 +124,18 @@ static void remsock(curl_socket_t s)
 }
 
 static void setsock(struct fdinfo *fdp, curl_socket_t s, CURL *easy,
-                    int action, long timeout)
+                    int action)
 {
   fdp->sockfd = s;
   fdp->action = action;
-  fdp->timeout = timeout;
   fdp->easy = easy;
 }
 
-static void addsock(curl_socket_t s, CURL *easy, int action, long timeout)
+static void addsock(curl_socket_t s, CURL *easy, int action)
 {
   struct fdinfo *fdp = calloc(sizeof(struct fdinfo), 1);
 
-  setsock(fdp, s, easy, action, timeout);
+  setsock(fdp, s, easy, action);
 
   if(allsocks) {
     fdp->next = allsocks;
@@ -190,8 +189,7 @@ static void fdinfo2fdset(fd2_set *fdread, fd2_set *fdwrite, int *maxfd)
 #endif
 }
 
-/* on port 8999 we run a modified (fork-) sws that supports pure idle and full
-   stream mode */
+/* on port 8999 we run a fork enabled sws that supports 'idle' and 'stream' */
 #define PORT "8999"
 
 #define HOST "192.168.1.13"
@@ -203,11 +201,10 @@ static void fdinfo2fdset(fd2_set *fdread, fd2_set *fdwrite, int *maxfd)
 static int socket_callback(CURL *easy,      /* easy handle */
                            curl_socket_t s, /* socket */
                            int what,        /* see above */
-                           long ms,         /* timeout for wait */
                            void *userp)     /* "private" pointer */
 {
   struct fdinfo *fdp;
-  printf("socket %d easy %p what %d timeout %ld\n", s, easy, what, ms);
+  printf("socket %d easy %p what %d\n", s, easy, what);
 
   if(what == CURL_POLL_REMOVE)
     remsock(s);
@@ -215,13 +212,13 @@ static int socket_callback(CURL *easy,      /* easy handle */
     fdp = findsock(s);
 
     if(!fdp) {
-      addsock(s, easy, what, ms);
+      addsock(s, easy, what);
     }
     else {
       /* we already know about it, just change action/timeout */
       printf("Changing info for socket %d from %d to %d\n",
              s, fdp->action, what);
-      setsock(fdp, s, easy, what, ms);
+      setsock(fdp, s, easy, what);
     }
   }
   return 0; /* return code meaning? */
@@ -440,9 +437,7 @@ int main(int argc, char **argv)
     curl_easy_setopt(e, CURLOPT_URL, conns[i].url);
     curl_easy_setopt(e, CURLOPT_WRITEFUNCTION, writecallback);
     curl_easy_setopt(e, CURLOPT_WRITEDATA, &conns[i]);
-#if 0
     curl_easy_setopt(e, CURLOPT_VERBOSE, 1);
-#endif
     curl_easy_setopt(e, CURLOPT_ERRORBUFFER, conns[i].error);
     curl_easy_setopt(e, CURLOPT_PRIVATE, &conns[i]);
 
@@ -464,14 +459,17 @@ int main(int argc, char **argv)
   while(1) {
     struct timeval timeout;
     int rc; /* select() return code */
+    long timeout_ms;
 
     fd2_set fdread;
     fd2_set fdwrite;
     int maxfd;
 
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
+    curl_multi_timeout(multi_handle, &timeout_ms);
+
+    /* set timeout to wait */
+    timeout.tv_sec = timeout_ms/1000;
+    timeout.tv_usec = (timeout_ms%1000)*1000;
 
     /* convert file descriptors from the transfers to fd_sets */
     fdinfo2fdset(&fdread, &fdwrite, &maxfd);
@@ -487,6 +485,10 @@ int main(int argc, char **argv)
       break;
     case 0:
       timeouts++;
+      curl_multi_socket(multi_handle, CURL_SOCKET_TIMEOUT, socket_callback,
+                        NULL);
+      break;
+
     default:
       /* timeout or readable/writable sockets */
 
@@ -505,25 +507,14 @@ int main(int argc, char **argv)
 
         if(act) {
           multi_socket++;
-#if 0
-          printf("multi_socket for %p socket %d (%d)\n",
-                 fdp, fdp->sockfd, act);
-#endif
           timer_continue();
           if(act & CURL_POLL_OUT)
             act--;
-          curl_multi_socket(multi_handle,
-                            CURL_SOCKET_BAD,
-                            fdp->easy,
-                            socket_callback, NULL);
+          curl_multi_socket(multi_handle, fdp->sockfd, socket_callback, NULL);
           timer_pause();
         }
       }
 
-#if 0
-      curl_multi_socket_all(multi_handle, socket_callback, NULL);
-#endif
-
       performselect += rc;
       if(rc > topselect)
         topselect = rc;