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