include headers where they're actually needed
[m6w6/ext-http] / php_http_request_datashare.h
1 #ifndef PHP_HTTP_REQUEST_DATASHARE_H
2 #define PHP_HTTP_REQUEST_DATASHARE_H
3
4 #include <curl/curl.h>
5
6 #ifdef ZTS
7 typedef struct php_http_request_datashare_lock {
8 CURL *ch;
9 MUTEX_T mx;
10 } php_http_request_datashare_lock_t;
11 #endif
12
13 typedef union php_http_request_datashare_handle {
14 zend_llist *list;
15 #ifdef ZTS
16 php_http_request_datashare_lock_t *locks;
17 #endif
18 } php_http_request_datashare_handle_t;
19
20 typedef struct php_http_request_datashare_t {
21 CURLSH *ch;
22 php_http_request_datashare_handle_t handle;
23 unsigned persistent:1;
24 #ifdef ZTS
25 void ***ts;
26 #endif
27 } php_http_request_datashare_t;
28
29 struct php_http_request_datashare_globals {
30 zend_llist handles;
31 zend_bool cookie;
32 zend_bool dns;
33 zend_bool ssl;
34 zend_bool connect;
35 };
36
37 #define PHP_HTTP_RSHARE_HANDLES(s) ((s)->persistent ? &PHP_HTTP_G->request_datashare.handles : (s)->handle.list)
38
39 extern php_http_request_datashare_t *php_http_request_datashare_global_get(void);
40
41 extern PHP_MINIT_FUNCTION(http_request_datashare);
42 extern PHP_MSHUTDOWN_FUNCTION(http_request_datashare);
43 extern PHP_RINIT_FUNCTION(http_request_datashare);
44 extern PHP_RSHUTDOWN_FUNCTION(http_request_datashare);
45
46 PHP_HTTP_API php_http_request_datashare_t *php_http_request_datashare_init(php_http_request_datashare_t *share, zend_bool persistent TSRMLS_DC);
47 PHP_HTTP_API STATUS php_http_request_datashare_attach(php_http_request_datashare_t *share, zval *request);
48 PHP_HTTP_API STATUS php_http_request_datashare_detach(php_http_request_datashare_t *share, zval *request);
49 PHP_HTTP_API void php_http_request_datashare_detach_all(php_http_request_datashare_t *share);
50 PHP_HTTP_API void php_http_request_datashare_dtor(php_http_request_datashare_t *share);
51 PHP_HTTP_API void php_http_request_datashare_free(php_http_request_datashare_t **share);
52 PHP_HTTP_API STATUS php_http_request_datashare_set(php_http_request_datashare_t *share, const char *option, size_t option_len, zend_bool enable);
53
54 typedef struct php_http_request_datashare_object {
55 zend_object zo;
56 php_http_request_datashare_t *share;
57 } php_http_request_datashare_object_t;
58
59 extern zend_class_entry *php_http_request_datashare_class_entry;
60 extern zend_function_entry php_http_request_datashare_method_entry[];
61
62 extern zend_object_value php_http_request_datashare_object_new(zend_class_entry *ce TSRMLS_DC);
63 extern zend_object_value php_http_request_datashare_object_new_ex(zend_class_entry *ce, php_http_request_datashare_t *share, php_http_request_datashare_object_t **ptr TSRMLS_DC);
64 extern void php_http_request_datashare_object_free(void *object TSRMLS_DC);
65
66 PHP_METHOD(HttpRequestDataShare, __destruct);
67 PHP_METHOD(HttpRequestDataShare, count);
68 PHP_METHOD(HttpRequestDataShare, attach);
69 PHP_METHOD(HttpRequestDataShare, detach);
70 PHP_METHOD(HttpRequestDataShare, reset);
71 PHP_METHOD(HttpRequestDataShare, getGlobalInstance);
72
73 #endif /* PHP_HTTP_REQUEST_DATASHARE_H */