void HttpNative_RegisterReadWriteCallback(CURL* curl, ReadWriteFunction functionType, ReadWriteCallback callback, void* userPointer, CallbackHandle** callbackHandle) { if (EnsureCallbackHandle(callbackHandle)) { CallbackHandle* handle = *callbackHandle; switch (functionType) { case Write: handle->writeCallback = callback; handle->writeUserPointer = userPointer; curl_easy_setopt(curl, CURLOPT_WRITEDATA, handle); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_callback); break; case Read: handle->readCallback = callback; handle->readUserPointer = userPointer; curl_easy_setopt(curl, CURLOPT_READDATA, handle); curl_easy_setopt(curl, CURLOPT_READFUNCTION, &read_callback); break; case Header: handle->headerCallback = callback; handle->headerUserPointer = userPointer; curl_easy_setopt(curl, CURLOPT_HEADERDATA, handle); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, &header_callback); break; } } }
extern "C" void HttpNative_RegisterSeekCallback(CURL* curl, SeekCallback callback, void* userPointer, CallbackHandle** callbackHandle) { EnsureCallbackHandle(callbackHandle); CallbackHandle* handle = *callbackHandle; handle->seekCallback = callback; handle->seekUserPointer = userPointer; curl_easy_setopt(curl, CURLOPT_SEEKDATA, handle); curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, &seek_callback); }
extern "C" int32_t HttpNative_RegisterSslCtxCallback(CURL* curl, SslCtxCallback callback, void* userPointer, CallbackHandle** callbackHandle) { EnsureCallbackHandle(callbackHandle); CallbackHandle* handle = *callbackHandle; handle->sslCtxCallback = callback; handle->sslUserPointer = userPointer; curl_easy_setopt(curl, CURLOPT_SSL_CTX_DATA, handle); return curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, &ssl_ctx_callback); }
int32_t HttpNative_RegisterSslCtxCallback(CURL* curl, SslCtxCallback callback, void* userPointer, CallbackHandle** callbackHandle) { if (!EnsureCallbackHandle(callbackHandle)) { return CURLE_OUT_OF_MEMORY; } CallbackHandle* handle = *callbackHandle; handle->sslCtxCallback = callback; handle->sslUserPointer = userPointer; curl_easy_setopt(curl, CURLOPT_SSL_CTX_DATA, handle); return (int32_t)(curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, &ssl_ctx_callback)); }
int32_t HttpNative_RegisterDebugCallback(CURL* curl, DebugCallback callback, void* userPointer, CallbackHandle** callbackHandle) { if (!EnsureCallbackHandle(callbackHandle)) { return CURLE_OUT_OF_MEMORY; } CallbackHandle* handle = *callbackHandle; handle->debugCallback = callback; handle->debugUserPointer = userPointer; CURLcode rv = curl_easy_setopt(curl, CURLOPT_DEBUGDATA, handle); return rv == CURLE_OK ? (int32_t)(curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, &debug_callback)) : (int32_t)rv; }