DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

CURLMOPT_SOCKETFUNCTION(3)





CURLMOPT_SOCKETFUNCTION(3curl_multi_setopt optionCURLMOPT_SOCKETFUNCTION(3)



NAME

     CURLMOPT_SOCKETFUNCTION - callback informed  about  what  to
     wait for


SYNOPSIS

     #include <curl/curl.h>

     int socket_callback(CURL *easy,      /* easy handle */
                         curl_socket_t s, /* socket */
                         int what,        /* describes the socket */
                         void *userp,     /* private callback pointer */
                         void *socketp);  /* private socket pointer */

     CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);


DESCRIPTION

     Pass a pointer to your callback function, which should match
     the prototype shown above.

     When  the  curl_multi_socket_action(3)  function  runs,   it
     informs  the  application  about updates in the socket (file
     descriptor) status by doing none, one, or multiple calls  to
     the  socket_callback.  The callback gets status updates with
     changes since the previous time the callback was called.  If
     the  given  callback  pointer  is  NULL, no callback will be
     called.   Set   the   callback's   userp    argument    with
     CURLMOPT_SOCKETDATA(3).  See curl_multi_socket_action(3) for
     more details on how the callback is used and should work.

     The what parameter informs the callback on the status of the
     given socket. It can hold one of these values:

     CURL_POLL_IN
          Wait for incoming data. For the socket to become  read-
          able.

     CURL_POLL_OUT
          Wait for outgoing data. For the socket to become  writ-
          able.

     CURL_POLL_INOUT
          Wait for incoming and outgoing data. For the socket  to
          become readable or writable.

     CURL_POLL_REMOVE
          The specified socket/file descriptor is no longer  used
          by libcurl.


DEFAULT

     NULL (no callback)

libcurl 7.58.0      Last change: May 31, 2017                   1


CURLMOPT_SOCKETFUNCTION(3curl_multi_setopt optionCURLMOPT_SOCKETFUNCTION(3)



PROTOCOLS

     All


EXAMPLE

     static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
     {
       GlobalInfo *g = (GlobalInfo*) cbp;
       SockInfo *fdp = (SockInfo*) sockp;

       if(what == CURL_POLL_REMOVE) {
         remsock(fdp);
       }
       else {
         if(!fdp) {
           addsock(s, e, what, g);
         }
         else {
           setsock(fdp, s, e, what, g);
         }
       }
       return 0;
     }

     main()
     {
       GlobalInfo setup;
       /* ... use socket callback and custom pointer */
       curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
       curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
     }


AVAILABILITY

     Added in 7.15.4


RETURN VALUE

     Returns CURLM_OK.


SEE ALSO

     CURLMOPT_SOCKETDATA(3),         curl_multi_socket_action(3),
     CURLMOPT_TIMERFUNCTION(3)

libcurl 7.58.0      Last change: May 31, 2017                   2


Man(1) output converted with man2html