CURLMOPT_TIMERFUNCTION(3) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

CURLMOPT_TIMERFUNCTION(3)

CURLMOPT_TIMERFUNCTION(3)  curl_multi_setopt options CURLMOPT_TIMERFUNCTION(3)



NAME
       CURLMOPT_TIMERFUNCTION - callback to receive timeout values

SYNOPSIS
       #include <curl/curl.h>

       int timer_callback(CURLM *multi,    /* multi handle */
                          long timeout_ms, /* timeout in number of ms */
                          void *userp);    /* private callback pointer */

       CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);

DESCRIPTION
       Pass a pointer to your callback function, which should match the proto‐
       type shown above.

       Certain features, such as timeouts and retries,  require  you  to  call
       libcurl even when there is no activity on the file descriptors.

       Your  callback  function  timer_callback should install a non-repeating
       timer with an expire time of timeout_ms milliseconds. When  that  timer
       fires,   call  either  curl_multi_socket_action(3)  or  curl_multi_per‐
       form(3), depending on which interface you use.

       A timeout_ms value of -1 passed  to  this  callback  means  you  should
       delete  the timer. All other values are valid expire times in number of
       milliseconds.

       The timer_callback will only be called when the timeout expire time  is
       changed.

       The userp pointer is set with CURLMOPT_TIMERDATA(3).

       The timer callback should return 0 on success, and -1 on error. If this
       callback returns error, all transfers currently  in  progress  in  this
       multi handle will be aborted and fail.

       This   callback   can   be   used   instead  of,  or  in  addition  to,
       curl_multi_timeout(3).

       WARNING: do not call libcurl directly from within the  callback  itself
       when  the  timeout_ms  value  is  zero,  since  it  risks triggering an
       unpleasant recursive behavior that immediately calls  another  call  to
       the callback with a zero timeout...

DEFAULT
       NULL

PROTOCOLS
       All

EXAMPLE
       static gboolean timeout_cb(gpointer user_data)
       {
         int running;
         if(user_data) {
           g_free(user_data);
           curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL);
         }
         curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running);
         return G_SOURCE_REMOVE;
       }

       static int timerfunc(CURLM *multi, long timeout_ms, void *userp)
       {
         guint *id = userp;

         if(id)
           g_source_remove(*id);

         /* -1 means we should just delete our timer. */
         if(timeout_ms == -1) {
           g_free(id);
           id = NULL;
         }
         else {
           if(!id)
             id = g_new(guint, 1);
           *id = g_timeout_add(timeout_ms, timeout_cb, id);
         }
         current_timer = id;
         return 0;
       }

       curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);

AVAILABILITY
       Added in 7.16.0

RETURN VALUE
       Returns  CURLM_OK  if the option is supported, and CURLM_UNKNOWN_OPTION
       if not.

SEE ALSO
       CURLMOPT_TIMERDATA(3), CURLMOPT_SOCKETFUNCTION(3),



libcurl 7.86.0                   May 17, 2022        CURLMOPT_TIMERFUNCTION(3)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3