X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_request_datashare.h;h=5ef63282f3fb59ee9065904d34e0a128fa6b4dac;hb=1e674ad6a7e867b1b4d04db098b59981fe3f011d;hp=fdc495031bedd8f13f0c6a97522f3f646b1ab957;hpb=d3485e3b28336153dca690e872ffe1ddc60fedd2;p=m6w6%2Fext-http diff --git a/php_http_request_datashare.h b/php_http_request_datashare.h index fdc4950..5ef6328 100644 --- a/php_http_request_datashare.h +++ b/php_http_request_datashare.h @@ -1,53 +1,80 @@ +/* + +--------------------------------------------------------------------+ + | PECL :: http | + +--------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met. | + +--------------------------------------------------------------------+ + | Copyright (c) 2004-2011, Michael Wallner | + +--------------------------------------------------------------------+ +*/ + #ifndef PHP_HTTP_REQUEST_DATASHARE_H #define PHP_HTTP_REQUEST_DATASHARE_H -#ifdef ZTS -typedef struct php_http_request_datashare_lock { - CURL *ch; - MUTEX_T mx; -} php_http_request_datashare_lock_t; -#endif +typedef enum php_http_request_datashare_setopt_opt { + PHP_HTTP_REQUEST_DATASHARE_OPT_COOKIES, + PHP_HTTP_REQUEST_DATASHARE_OPT_RESOLVER, +} php_http_request_datashare_setopt_opt_t; -typedef union php_http_request_datashare_handle { - zend_llist *list; -#ifdef ZTS - php_http_request_datashare_lock_t *locks; -#endif -} php_http_request_datashare_handle_t; +typedef struct php_http_request_datashare php_http_request_datashare_t; + +typedef php_http_request_datashare_t *(*php_http_request_datashare_init_func_t)(php_http_request_datashare_t *h, void *init_arg); +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); +typedef void (*php_http_request_datashare_dtor_func_t)(php_http_request_datashare_t *h); +typedef void (*php_http_request_datashare_reset_func_t)(php_http_request_datashare_t *h); +typedef STATUS (*php_http_request_datashare_attach_func_t)(php_http_request_datashare_t *h, php_http_request_t *request); +typedef STATUS (*php_http_request_datashare_detach_func_t)(php_http_request_datashare_t *h, php_http_request_t *request); +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); -typedef struct php_http_request_datashare_t { - CURLSH *ch; - php_http_request_datashare_handle_t handle; +typedef struct php_http_request_datashare_ops { + php_http_resource_factory_ops_t *rsrc; + php_http_request_datashare_init_func_t init; + php_http_request_datashare_copy_func_t copy; + php_http_request_datashare_dtor_func_t dtor; + php_http_request_datashare_reset_func_t reset; + php_http_request_datashare_attach_func_t attach; + php_http_request_datashare_detach_func_t detach; + php_http_request_datashare_setopt_func_t setopt; +} php_http_request_datashare_ops_t; + +#define PHP_HTTP_REQUEST_DATASHARE_REQUESTS(s) ((s)->persistent ? &PHP_HTTP_G->request_datashare.requests : (s)->requests) +struct php_http_request_datashare { + void *ctx; + php_http_resource_factory_t *rf; + php_http_request_datashare_ops_t *ops; + zend_llist *requests; /* NULL if persistent, use PHP_HTTP_REQUEST_DATASHARE_REQUESTS */ unsigned persistent:1; + zval *persistent_handle_id; #ifdef ZTS void ***ts; #endif -} php_http_request_datashare_t; +}; struct php_http_request_datashare_globals { - zend_llist handles; + zend_llist requests; zend_bool cookie; zend_bool dns; zend_bool ssl; zend_bool connect; }; -#define PHP_HTTP_RSHARE_HANDLES(s) ((s)->persistent ? &PHP_HTTP_G->request_datashare.handles : (s)->handle.list) - -extern php_http_request_datashare_t *php_http_request_datashare_global_get(void); +extern php_http_request_datashare_t *php_http_request_datashare_global_get(const char *driver_str, size_t driver_len TSRMLS_DC); extern PHP_MINIT_FUNCTION(http_request_datashare); extern PHP_MSHUTDOWN_FUNCTION(http_request_datashare); extern PHP_RINIT_FUNCTION(http_request_datashare); extern PHP_RSHUTDOWN_FUNCTION(http_request_datashare); -PHP_HTTP_API php_http_request_datashare_t *php_http_request_datashare_init(php_http_request_datashare_t *share, zend_bool persistent TSRMLS_DC); -PHP_HTTP_API STATUS php_http_request_datashare_attach(php_http_request_datashare_t *share, zval *request); -PHP_HTTP_API STATUS php_http_request_datashare_detach(php_http_request_datashare_t *share, zval *request); -PHP_HTTP_API void php_http_request_datashare_detach_all(php_http_request_datashare_t *share); -PHP_HTTP_API void php_http_request_datashare_dtor(php_http_request_datashare_t *share); -PHP_HTTP_API void php_http_request_datashare_free(php_http_request_datashare_t **share); -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); +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); +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); +PHP_HTTP_API void php_http_request_datashare_dtor(php_http_request_datashare_t *h); +PHP_HTTP_API void php_http_request_datashare_free(php_http_request_datashare_t **h); +PHP_HTTP_API STATUS php_http_request_datashare_attach(php_http_request_datashare_t *h, zval *request); +PHP_HTTP_API STATUS php_http_request_datashare_detach(php_http_request_datashare_t *h, zval *request); +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); +PHP_HTTP_API void php_http_request_datashare_reset(php_http_request_datashare_t *h); typedef struct php_http_request_datashare_object { zend_object zo; @@ -61,11 +88,21 @@ extern zend_object_value php_http_request_datashare_object_new(zend_class_entry 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); extern void php_http_request_datashare_object_free(void *object TSRMLS_DC); +PHP_METHOD(HttpRequestDataShare, __construct); PHP_METHOD(HttpRequestDataShare, __destruct); PHP_METHOD(HttpRequestDataShare, count); PHP_METHOD(HttpRequestDataShare, attach); PHP_METHOD(HttpRequestDataShare, detach); PHP_METHOD(HttpRequestDataShare, reset); -PHP_METHOD(HttpRequestDataShare, getGlobalInstance); #endif /* PHP_HTTP_REQUEST_DATASHARE_H */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ +