3b719623107847b9155631df1e654e7520e4d200
[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 "php_http_request.h"
5
6 typedef enum php_http_request_datashare_setopt_opt {
7 PHP_HTTP_REQUEST_DATASHARE_OPT_COOKIES,
8 PHP_HTTP_REQUEST_DATASHARE_OPT_RESOLVER,
9 } php_http_request_datashare_setopt_opt_t;
10
11 typedef struct php_http_request_datashare php_http_request_datashare_t;
12
13 typedef php_http_request_datashare_t *(*php_http_request_datashare_init_func_t)(php_http_request_datashare_t *h, void *init_arg);
14 typedef php_http_request_datashare_t *(*php_http_request_datashare_copy_func_t)(php_http_request_datashare_t *from, php_http_request_datashare_t *to);
15 typedef void (*php_http_request_datashare_dtor_func_t)(php_http_request_datashare_t *h);
16 typedef void (*php_http_request_datashare_reset_func_t)(php_http_request_datashare_t *h);
17 typedef STATUS (*php_http_request_datashare_attach_func_t)(php_http_request_datashare_t *h, php_http_request_t *request);
18 typedef STATUS (*php_http_request_datashare_detach_func_t)(php_http_request_datashare_t *h, php_http_request_t *request);
19 typedef STATUS (*php_http_request_datashare_setopt_func_t)(php_http_request_datashare_t *h, php_http_request_datashare_setopt_opt_t opt, void *arg);
20
21 typedef struct php_http_request_datashare_ops {
22 php_http_resource_factory_ops_t *rsrc;
23 php_http_request_datashare_init_func_t init;
24 php_http_request_datashare_copy_func_t copy;
25 php_http_request_datashare_dtor_func_t dtor;
26 php_http_request_datashare_reset_func_t reset;
27 php_http_request_datashare_attach_func_t attach;
28 php_http_request_datashare_detach_func_t detach;
29 php_http_request_datashare_setopt_func_t setopt;
30 } php_http_request_datashare_ops_t;
31
32 #define PHP_HTTP_REQUEST_DATASHARE_REQUESTS(s) ((s)->persistent ? &PHP_HTTP_G->request_datashare.requests : (s)->requests)
33 struct php_http_request_datashare {
34 void *ctx;
35 php_http_resource_factory_t *rf;
36 php_http_request_datashare_ops_t *ops;
37 zend_llist *requests; /* NULL if persistent, use PHP_HTTP_REQUEST_DATASHARE_REQUESTS */
38 unsigned persistent:1;
39 zval *persistent_handle_id;
40 #ifdef ZTS
41 void ***ts;
42 #endif
43 };
44
45 struct php_http_request_datashare_globals {
46 zend_llist requests;
47 zend_bool cookie;
48 zend_bool dns;
49 zend_bool ssl;
50 zend_bool connect;
51 };
52
53 extern php_http_request_datashare_t *php_http_request_datashare_global_get(const char *driver_str, size_t driver_len TSRMLS_DC);
54
55 extern PHP_MINIT_FUNCTION(http_request_datashare);
56 extern PHP_MSHUTDOWN_FUNCTION(http_request_datashare);
57 extern PHP_RINIT_FUNCTION(http_request_datashare);
58 extern PHP_RSHUTDOWN_FUNCTION(http_request_datashare);
59
60 PHP_HTTP_API php_http_request_datashare_t *php_http_request_datashare_init(php_http_request_datashare_t *h, php_http_request_datashare_ops_t *ops, php_http_resource_factory_t *rf, void *init_arg, zend_bool persistent TSRMLS_DC);
61 PHP_HTTP_API php_http_request_datashare_t *php_http_request_datashare_copy(php_http_request_datashare_t *from, php_http_request_datashare_t *to);
62 PHP_HTTP_API void php_http_request_datashare_dtor(php_http_request_datashare_t *h);
63 PHP_HTTP_API void php_http_request_datashare_free(php_http_request_datashare_t **h);
64 PHP_HTTP_API STATUS php_http_request_datashare_attach(php_http_request_datashare_t *h, zval *request);
65 PHP_HTTP_API STATUS php_http_request_datashare_detach(php_http_request_datashare_t *h, zval *request);
66 PHP_HTTP_API STATUS php_http_request_datashare_setopt(php_http_request_datashare_t *h, php_http_request_datashare_setopt_opt_t opt, void *arg);
67 PHP_HTTP_API void php_http_request_datashare_reset(php_http_request_datashare_t *h);
68
69 typedef struct php_http_request_datashare_object {
70 zend_object zo;
71 php_http_request_datashare_t *share;
72 } php_http_request_datashare_object_t;
73
74 extern zend_class_entry *php_http_request_datashare_class_entry;
75 extern zend_function_entry php_http_request_datashare_method_entry[];
76
77 extern zend_object_value php_http_request_datashare_object_new(zend_class_entry *ce TSRMLS_DC);
78 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);
79 extern void php_http_request_datashare_object_free(void *object TSRMLS_DC);
80
81 PHP_METHOD(HttpRequestDataShare, __construct);
82 PHP_METHOD(HttpRequestDataShare, __destruct);
83 PHP_METHOD(HttpRequestDataShare, count);
84 PHP_METHOD(HttpRequestDataShare, attach);
85 PHP_METHOD(HttpRequestDataShare, detach);
86 PHP_METHOD(HttpRequestDataShare, reset);
87
88 #endif /* PHP_HTTP_REQUEST_DATASHARE_H */