versione in cURL/sistema operativo in questione è 7.15 e Red Hat 5, questi sono impostati in pietra ma non possono quindi essere modificati.La funzione di avanzamento di libcURL non viene chiamata
La funzione effettiva progresso che non viene chiamato a tutto il codice
int CurlUtil::progressCallback(void *clientp, double dltotal, double dlnow,
double ultotal, double ulnow)
{
DEFN_METHOD_NAME("progressCallback");
EX_ENTRY_EXIT();
EX_DEBUG("Total downloaded " << dlnow << "/" << dltotal);
EX_DEBUG("Total uploaded " << ulnow << "/" << ultotal);
CurlUtil* curlUtil = (CurlUtil*)clientp;
// If you return anything but 0, curl will abort transfer
return (true == curlUtil->killed()) ? 1 : 0;
}
Il setup:
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(m_curl, CURLOPT_PROGRESSFUNCTION, CurlUtil::progressCallback);
curl_easy_setopt(m_curl, CURLOPT_PROGRESSDATA, this)
Dove CurlUtil è la classe che il codice esistente nella CURLOPT_DEBUGFUNCTION funziona bene ed è. impostare esattamente la stessa funzione allo stesso modo.
Sei sicuro al 100% dei dati che vengono effettivamente trasferiti? Inoltre, potrebbe non essere chiamato se il trasferimento è troppo veloce. È 'progressCallback' statico? –
Se 'progressCallback()' non è dichiarato come 'statico', deve essere. Non è possibile utilizzare un metodo di classe non statico come callback (a meno che non lo si avvolga in un thunk). –
... e se i commenti di Remy's o Collin sono validi, la domanda è errata ... –