re-enable the factory
[m6w6/ext-http] / php_http_client_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_CLIENT_DATASHARE_H
14 #define PHP_HTTP_CLIENT_DATASHARE_H
15
16 typedef enum php_http_client_datashare_setopt_opt {
17 PHP_HTTP_CLIENT_DATASHARE_OPT_COOKIES,
18 PHP_HTTP_CLIENT_DATASHARE_OPT_RESOLVER,
19 PHP_HTTP_CLIENT_DATASHARE_OPT_SSLSESSIONS,
20 } php_http_client_datashare_setopt_opt_t;
21
22 typedef struct php_http_client_datashare *(*php_http_client_datashare_init_func_t)(struct php_http_client_datashare *h, void *init_arg);
23 typedef struct php_http_client_datashare *(*php_http_client_datashare_copy_func_t)(struct php_http_client_datashare *from, struct php_http_client_datashare *to);
24 typedef void (*php_http_client_datashare_dtor_func_t)(struct php_http_client_datashare *h);
25 typedef void (*php_http_client_datashare_reset_func_t)(struct php_http_client_datashare *h);
26 typedef STATUS (*php_http_client_datashare_attach_func_t)(struct php_http_client_datashare *h, php_http_client_t *client);
27 typedef STATUS (*php_http_client_datashare_detach_func_t)(struct php_http_client_datashare *h, php_http_client_t *client);
28 typedef STATUS (*php_http_client_datashare_setopt_func_t)(struct php_http_client_datashare *h, php_http_client_datashare_setopt_opt_t opt, void *arg);
29
30 typedef struct php_http_client_datashare_ops {
31 php_http_resource_factory_ops_t *rsrc;
32 php_http_client_datashare_init_func_t init;
33 php_http_client_datashare_copy_func_t copy;
34 php_http_client_datashare_dtor_func_t dtor;
35 php_http_client_datashare_reset_func_t reset;
36 php_http_client_datashare_attach_func_t attach;
37 php_http_client_datashare_detach_func_t detach;
38 php_http_client_datashare_setopt_func_t setopt;
39 php_http_new_t create_object;
40 zend_class_entry *(*class_entry)(void);
41 } php_http_client_datashare_ops_t;
42
43 typedef struct php_http_client_datashare {
44 void *ctx;
45 php_http_resource_factory_t *rf;
46 php_http_client_datashare_ops_t *ops;
47 zend_llist clients;
48 #ifdef ZTS
49 void ***ts;
50 #endif
51 } php_http_client_datashare_t;
52
53 extern PHP_MINIT_FUNCTION(http_client_datashare);
54
55 PHP_HTTP_API php_http_client_datashare_t *php_http_client_datashare_init(php_http_client_datashare_t *h, php_http_client_datashare_ops_t *ops, php_http_resource_factory_t *rf, void *init_arg TSRMLS_DC);
56 PHP_HTTP_API php_http_client_datashare_t *php_http_client_datashare_copy(php_http_client_datashare_t *from, php_http_client_datashare_t *to);
57 PHP_HTTP_API void php_http_client_datashare_dtor(php_http_client_datashare_t *h);
58 PHP_HTTP_API void php_http_client_datashare_free(php_http_client_datashare_t **h);
59 PHP_HTTP_API STATUS php_http_client_datashare_attach(php_http_client_datashare_t *h, zval *client);
60 PHP_HTTP_API STATUS php_http_client_datashare_detach(php_http_client_datashare_t *h, zval *client);
61 PHP_HTTP_API STATUS php_http_client_datashare_setopt(php_http_client_datashare_t *h, php_http_client_datashare_setopt_opt_t opt, void *arg);
62 PHP_HTTP_API void php_http_client_datashare_reset(php_http_client_datashare_t *h);
63
64 typedef struct php_http_client_datashare_object {
65 zend_object zo;
66 php_http_client_datashare_t *share;
67 } php_http_client_datashare_object_t;
68
69 extern zend_class_entry *php_http_client_datashare_class_entry;
70 extern zend_function_entry php_http_client_datashare_method_entry[];
71
72 extern zend_object_value php_http_client_datashare_object_new(zend_class_entry *ce TSRMLS_DC);
73 extern zend_object_value php_http_client_datashare_object_new_ex(zend_class_entry *ce, php_http_client_datashare_t *share, php_http_client_datashare_object_t **ptr TSRMLS_DC);
74 extern void php_http_client_datashare_object_free(void *object TSRMLS_DC);
75
76 extern zend_object_handlers *php_http_client_datashare_get_object_handlers(void);
77
78 PHP_METHOD(HttpClientDataShare, __destruct);
79 PHP_METHOD(HttpClientDataShare, count);
80 PHP_METHOD(HttpClientDataShare, attach);
81 PHP_METHOD(HttpClientDataShare, detach);
82 PHP_METHOD(HttpClientDataShare, reset);
83
84 #endif /* PHP_HTTP_CLIENT_DATASHARE_H */
85
86 /*
87 * Local variables:
88 * tab-width: 4
89 * c-basic-offset: 4
90 * End:
91 * vim600: noet sw=4 ts=4 fdm=marker
92 * vim<600: noet sw=4 ts=4
93 */
94