build and file maintenance
[m6w6/ext-http] / php_http_request_datashare.h
1 /*
2 +--------------------------------------------------------------------+
3 | PECL :: http |
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2004-2011, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
11 */
12
13 #ifndef PHP_HTTP_REQUEST_DATASHARE_H
14 #define PHP_HTTP_REQUEST_DATASHARE_H
15
16 #include "php_http_request.h"
17
18 typedef enum php_http_request_datashare_setopt_opt {
19 PHP_HTTP_REQUEST_DATASHARE_OPT_COOKIES,
20 PHP_HTTP_REQUEST_DATASHARE_OPT_RESOLVER,
21 } php_http_request_datashare_setopt_opt_t;
22
23 typedef struct php_http_request_datashare php_http_request_datashare_t;
24
25 typedef php_http_request_datashare_t *(*php_http_request_datashare_init_func_t)(php_http_request_datashare_t *h, void *init_arg);
26 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);
27 typedef void (*php_http_request_datashare_dtor_func_t)(php_http_request_datashare_t *h);
28 typedef void (*php_http_request_datashare_reset_func_t)(php_http_request_datashare_t *h);
29 typedef STATUS (*php_http_request_datashare_attach_func_t)(php_http_request_datashare_t *h, php_http_request_t *request);
30 typedef STATUS (*php_http_request_datashare_detach_func_t)(php_http_request_datashare_t *h, php_http_request_t *request);
31 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);
32
33 typedef struct php_http_request_datashare_ops {
34 php_http_resource_factory_ops_t *rsrc;
35 php_http_request_datashare_init_func_t init;
36 php_http_request_datashare_copy_func_t copy;
37 php_http_request_datashare_dtor_func_t dtor;
38 php_http_request_datashare_reset_func_t reset;
39 php_http_request_datashare_attach_func_t attach;
40 php_http_request_datashare_detach_func_t detach;
41 php_http_request_datashare_setopt_func_t setopt;
42 } php_http_request_datashare_ops_t;
43
44 #define PHP_HTTP_REQUEST_DATASHARE_REQUESTS(s) ((s)->persistent ? &PHP_HTTP_G->request_datashare.requests : (s)->requests)
45 struct php_http_request_datashare {
46 void *ctx;
47 php_http_resource_factory_t *rf;
48 php_http_request_datashare_ops_t *ops;
49 zend_llist *requests; /* NULL if persistent, use PHP_HTTP_REQUEST_DATASHARE_REQUESTS */
50 unsigned persistent:1;
51 zval *persistent_handle_id;
52 #ifdef ZTS
53 void ***ts;
54 #endif
55 };
56
57 struct php_http_request_datashare_globals {
58 zend_llist requests;
59 zend_bool cookie;
60 zend_bool dns;
61 zend_bool ssl;
62 zend_bool connect;
63 };
64
65 extern php_http_request_datashare_t *php_http_request_datashare_global_get(const char *driver_str, size_t driver_len TSRMLS_DC);
66
67 extern PHP_MINIT_FUNCTION(http_request_datashare);
68 extern PHP_MSHUTDOWN_FUNCTION(http_request_datashare);
69 extern PHP_RINIT_FUNCTION(http_request_datashare);
70 extern PHP_RSHUTDOWN_FUNCTION(http_request_datashare);
71
72 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);
73 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);
74 PHP_HTTP_API void php_http_request_datashare_dtor(php_http_request_datashare_t *h);
75 PHP_HTTP_API void php_http_request_datashare_free(php_http_request_datashare_t **h);
76 PHP_HTTP_API STATUS php_http_request_datashare_attach(php_http_request_datashare_t *h, zval *request);
77 PHP_HTTP_API STATUS php_http_request_datashare_detach(php_http_request_datashare_t *h, zval *request);
78 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);
79 PHP_HTTP_API void php_http_request_datashare_reset(php_http_request_datashare_t *h);
80
81 typedef struct php_http_request_datashare_object {
82 zend_object zo;
83 php_http_request_datashare_t *share;
84 } php_http_request_datashare_object_t;
85
86 extern zend_class_entry *php_http_request_datashare_class_entry;
87 extern zend_function_entry php_http_request_datashare_method_entry[];
88
89 extern zend_object_value php_http_request_datashare_object_new(zend_class_entry *ce TSRMLS_DC);
90 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);
91 extern void php_http_request_datashare_object_free(void *object TSRMLS_DC);
92
93 PHP_METHOD(HttpRequestDataShare, __construct);
94 PHP_METHOD(HttpRequestDataShare, __destruct);
95 PHP_METHOD(HttpRequestDataShare, count);
96 PHP_METHOD(HttpRequestDataShare, attach);
97 PHP_METHOD(HttpRequestDataShare, detach);
98 PHP_METHOD(HttpRequestDataShare, reset);
99
100 #endif /* PHP_HTTP_REQUEST_DATASHARE_H */
101
102 /*
103 * Local variables:
104 * tab-width: 4
105 * c-basic-offset: 4
106 * End:
107 * vim600: noet sw=4 ts=4 fdm=marker
108 * vim<600: noet sw=4 ts=4
109 */
110