Libcurl - как работает параметр CURLMOPT_TIMERFUNCTION
От: Optimus1  
Дата: 23.12.21 19:36
Оценка:
Здравствуйте,

Я допускаю, что я полный тугодум, но я ни черта не могу понять, как работает параметр CURLMOPT_TIMERFUNCTION в либкурле: https://curl.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html





timer_callback(CURLM *multi, long timeout_ms, void *userp)
{
//какой то код
}
 
curl_multi_setopt(curl_multi_handle, CURLMOPT_TIMERFUNCTION,  timer_callback);





Некоторые функции, такие как таймауты и повторные попытки, требуют вызова libcurl, даже если дескрипторы файлов не выполняются.



Нафига ??


Значение timeout_ms, равное -1, переданное этому обратному вызову, означает, что вы должны удалить таймер. Все остальные значения являются допустимыми сроками действия в миллисекундах.


Переданное кем ?? Я что должен этот кол-бэк еще вызывать ?? Зачем и откуда ???



Ваша функция обратного вызова timer_callback должна установить неповторяющийся таймер со временем истечения timeout_ms миллисекунд. Когда сработает этот таймер, вызовите либо curl_multi_socket_action, либо curl_multi_perform , в зависимости от того, какой интерфейс вы используете.


Зачем мне вызывать curl_multi_socket_action() из кол-бэка таймера, если мне нужно его вызвать из той части когда, где сработало событие на сокете от ОС — оповещающее меня, что сокет готов или к записи или к чтению и в этот момент я бы и вызвал curl_multi_socket_action(). На какой черт нужны какие то таймеры или откуда их вызывать то ???
И зачем тогда вообще вызывать таймер, если можно сразу вызвать curl_multi_socket_action()??


Ваша функция обратного вызова timer_callback должна установить неповторяющийся таймер...

Что значит не повторяющийся ? А если он повторится ?


Или я полный идиот или документация либкурл так "хорошо" написана, специально, чтобы поменьше народу им использовалось.
Я просто реально физически не могу представить в каком месте кода при осуществлении к примеру GET запроса — этот чёртов таймер должен быть, как то вызван и зачем.
Отредактировано 23.12.2021 19:42 Optimus1 . Предыдущая версия .
libcurl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.