как я могу заставить libcurl выполнять обратный вызов ДО того, как он отправит некоторую информацию о сообщении?

Я загружаю информацию на сервер с помощью почтового вызова (используя curlpp, но libcurl напрямую тоже подходит).

Обратный вызов CURLOPT_PROGRESSFUNCTION время от времени вызывается с отчетами о том, сколько данных было отправлено до сих пор. Когда я загружаю файл, я вижу, что этот вызов выполняется с очень небольшой разницей между вызовами.

Я хочу получить обратный вызов ПЕРЕД отправкой каждой части данных с информацией о том, сколько данных будет передано сейчас.


person polo    schedule 10.10.2012    source источник


Ответы (2)


В libcurl таких обратных вызовов нет. CURLOPT_DEBUGFUNCTION сообщит вам в основном эту информацию, но после того, как она была отправлена...

person Daniel Stenberg    schedule 10.10.2012
comment
есть ли способ внедрить такой обратный вызов (желательно только для конкретного экземпляра простого обработчика)? - person polo; 10.10.2012

Вы можете использовать обратный вызов для установки, передав CURLOPT_READFUNCTION в curl_easy_setopt().

Это предполагает, что объем данных, которые должны быть прочитаны этой функцией обратного вызова, будет равен размеру следующего отправляемого фрагмента.

Подробнее см. здесь: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTREADFUNCTION

person alk    schedule 10.10.2012
comment
CURLOPT_WRITEFUNCTION и CURLOPT_READFUNCTION были первыми, что я попробовал, но хотя CURLOPT_PROGRESSFUNCTION вызывается несколько раз во время загрузки, ни обратный вызов чтения, ни записи, похоже, не вызывается. Есть идеи, почему? - person polo; 10.10.2012