コード例 #1
0
ファイル: pal_easy.c プロジェクト: AmeerThasthahir/corefx
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;
        }
    }
}
コード例 #2
0
ファイル: pal_easy.cpp プロジェクト: er0dr1guez/corefx
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);
}
コード例 #3
0
ファイル: pal_easy.cpp プロジェクト: er0dr1guez/corefx
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);
}
コード例 #4
0
ファイル: pal_easy.c プロジェクト: AmeerThasthahir/corefx
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));
}
コード例 #5
0
ファイル: pal_easy.c プロジェクト: AmeerThasthahir/corefx
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;
}