Files
Odin/vendor/curl/curl_easy.odin
2025-09-04 12:39:30 +01:00

101 lines
2.9 KiB
Odin

package vendor_curl
import c "core:c/libc"
/* Flag bits in the curl_blob struct: */
BLOB_COPY :: blob_flags{.COPY} /* tell libcurl to copy the data */
BLOB_NOCOPY :: blob_flags{} /* tell libcurl to NOT copy the data */
blob_flags :: distinct bit_set[blob_flag; c.uint]
blob_flag :: enum c.uint {
COPY = 0,
}
blob :: struct {
data: rawptr,
len: c.size_t,
flags: blob_flags, /* bit 0 is defined, the rest are reserved and should be
left zeroes */
}
@(default_calling_convention="c", link_prefix="curl_")
foreign lib {
easy_init :: proc() -> ^CURL ---
easy_setopt :: proc(curl: ^CURL, option: option, #c_vararg args: ..any) -> code ---
easy_perform :: proc(curl: ^CURL) -> code ---
easy_cleanup :: proc(curl: ^CURL) ---
/*
* NAME curl_easy_getinfo()
*
* DESCRIPTION
*
* Request internal information from the curl session with this function.
* The third argument MUST be pointing to the specific type of the used option
* which is documented in each manpage of the option. The data pointed to
* will be filled in accordingly and can be relied upon only if the function
* returns CURLE_OK. This function is intended to get used *AFTER* a performed
* transfer, all results from this function are undefined until the transfer
* is completed.
*/
easy_getinfo :: proc(curl: ^CURL, info: INFO, #c_vararg args: ..any) -> code ---
/*
* NAME curl_easy_duphandle()
*
* DESCRIPTION
*
* Creates a new curl session handle with the same options set for the handle
* passed in. Duplicating a handle could only be a matter of cloning data and
* options, internal state info and things like persistent connections cannot
* be transferred. It is useful in multithreaded applications when you can run
* curl_easy_duphandle() for each new thread to avoid a series of identical
* curl_easy_setopt() invokes in every thread.
*/
easy_duphandle :: proc(curl: ^CURL) -> ^CURL ---
/*
* NAME curl_easy_reset()
*
* DESCRIPTION
*
* Re-initializes a curl handle to the default values. This puts back the
* handle to the same state as it was in when it was just created.
*
* It does keep: live connections, the Session ID cache, the DNS cache and the
* cookies.
*/
easy_reset :: proc(curl: ^CURL) ---
/*
* NAME curl_easy_recv()
*
* DESCRIPTION
*
* Receives data from the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
easy_recv :: proc(curl: ^CURL, buffer: rawptr, buflen: c.size_t, n: ^c.size_t) -> code ---
/*
* NAME curl_easy_send()
*
* DESCRIPTION
*
* Sends data over the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
easy_send :: proc(curl: ^CURL, buffer: rawptr, buflen: c.size_t, n: ^c.size_t) -> code ---
/*
* NAME curl_easy_upkeep()
*
* DESCRIPTION
*
* Performs connection upkeep for the given session handle.
*/
easy_upkeep :: proc(curl: ^CURL) -> code ---
}