From a95df8246b352cd54777cc518a406e7ff35b2322 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 28 Aug 2003 11:21:14 +0000 Subject: [PATCH] Henrik Storner's rewrite that includes a nice usage of curl_multi_info_read() --- docs/examples/multi-app.c | 51 ++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/docs/examples/multi-app.c b/docs/examples/multi-app.c index aead0244f..9e3d72703 100644 --- a/docs/examples/multi-app.c +++ b/docs/examples/multi-app.c @@ -23,29 +23,38 @@ /* * Download a HTTP file and upload an FTP file simultaneously. */ + +#define HANDLECOUNT 2 /* Number of simultaneous transfers */ +#define HTTP_HANDLE 0 /* Index for the HTTP transfer */ +#define FTP_HANDLE 1 /* Index for the FTP transfer */ + int main(int argc, char **argv) { - CURL *http_handle; - CURL *ftp_handle; + CURL *handles[HANDLECOUNT]; CURLM *multi_handle; int still_running; /* keep number of running handles */ + int i; - http_handle = curl_easy_init(); - ftp_handle = curl_easy_init(); + CURLMsg *msg; /* for picking up messages with the transfer status */ + int msgs_left; /* how many messages are left */ + + /* Allocate one CURL handle per transfer */ + for (i=0; imsg == CURLMSG_DONE) { + int idx, found = 0; + + /* Find out which handle this message is about */ + for (idx=0; (!found && (idxeasy_handle == handles[idx]); + + switch (idx) { + case HTTP_HANDLE: + printf("HTTP transfer completed with status %d\n", msg->data.result); + break; + case FTP_HANDLE: + printf("FTP transfer completed with status %d\n", msg->data.result); + break; + } + } + } + + /* Free the CURL handles */ + for (i=0; i