libcortex
Event loop library following a "batteries included" approach
Loading...
Searching...
No Matches
curl.h
1#ifndef _CRTX_CURL_H
2#define _CRTX_CURL_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/*
9 * Mario Kicherer (dev@kicherer.org) 2019
10 *
11 */
12
13#include <curl/curl.h>
14
15#include "core.h"
16
18
19typedef int crtx_CURLOPT_XFERINFOFUNCTION(void *userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
20typedef int crtx_CURLOPT_PROGRESSFUNCTION(void *userdata, double dltotal, double dlnow, double ultotal, double ulnow);
21typedef size_t crtx_CURLOPT_WRITEFUNCTION(char *ptr, size_t size, size_t nmemb, void *userdata);
22typedef size_t crtx_CURLOPT_HEADERFUNCTION(char *buffer, size_t size, size_t nitems, void *userdata);
23typedef int crtx_curl_done_cb(void *userdata, struct CURLMsg *msg, long response_code, long error_code);
24
28 struct crtx_listener_base base;
29
30 CURL *easy;
31 char *url;
32 char error[CURL_ERROR_SIZE];
33
34 #if LIBCURL_VERSION_NUM >= 0x072000 // 0.7.32
35 crtx_CURLOPT_XFERINFOFUNCTION *progress_callback;
36 #else
37 crtx_CURLOPT_PROGRESSFUNCTION *progress_callback;
38 #endif
39 void *progress_cb_data;
40 crtx_CURLOPT_HEADERFUNCTION *header_callback;
41 void *header_cb_data;
42 crtx_CURLOPT_WRITEFUNCTION *write_callback;
43 void *write_cb_data;
44 FILE *write_file_ptr;
45 int write_fd;
46
47 crtx_curl_done_cb *done_callback;
48 void *done_cb_data;
49};
50
51#define CRTX_EVENT_TYPE_FAMILY_CURL (500)
52#define CRTX_CURL_ET_FINISHED (CRTX_EVENT_TYPE_FAMILY_CURL + 1)
53#define CRTX_CURL_ET_PROGRESS (CRTX_EVENT_TYPE_FAMILY_CURL + 2)
54#define CRTX_CURL_ET_HEADER (CRTX_EVENT_TYPE_FAMILY_CURL + 3)
55
56int crtx_curl_progress_callback(void *userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
57size_t crtx_curl_header_callback(char *buffer, size_t size, size_t nitems, void *userdata);
58
59struct crtx_listener_base *crtx_setup_curl_listener(void *options);
60CRTX_DECLARE_ALLOC_FUNCTION(curl)
61
62void crtx_curl_init();
63void crtx_curl_finish();
64
65#ifdef __cplusplus
66}
67#endif
68
69#endif
The core definitions of libcortex.
listener that downloads data from the network using, e.g., HTTP
Definition curl.h:27
base structure of a listener
Definition core.h:186
void * userdata
storage for user-provided data
Definition core.h:225