+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_ops {
+ 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_request_datashare_ops_t *ops;
+ zend_llist *requests; /* NULL if persistent, use PHP_HTTP_REQUEST_DATASHARE_REQUESTS */