2 +--------------------------------------------------------------------+
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 +--------------------------------------------------------------------+
13 #ifndef PHP_HTTP_REQUEST_DATASHARE_H
14 #define PHP_HTTP_REQUEST_DATASHARE_H
16 #include "php_http_request.h"
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
;
23 typedef struct php_http_request_datashare php_http_request_datashare_t
;
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
);
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
;
44 #define PHP_HTTP_REQUEST_DATASHARE_REQUESTS(s) ((s)->persistent ? &PHP_HTTP_G->request_datashare.requests : (s)->requests)
45 struct php_http_request_datashare
{
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
;
57 struct php_http_request_datashare_globals
{
65 extern php_http_request_datashare_t
*php_http_request_datashare_global_get(const char *driver_str
, size_t driver_len TSRMLS_DC
);
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
);
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
);
81 typedef struct php_http_request_datashare_object
{
83 php_http_request_datashare_t
*share
;
84 } php_http_request_datashare_object_t
;
86 extern zend_class_entry
*php_http_request_datashare_class_entry
;
87 extern zend_function_entry php_http_request_datashare_method_entry
[];
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
);
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
);
100 #endif /* PHP_HTTP_REQUEST_DATASHARE_H */
107 * vim600: noet sw=4 ts=4 fdm=marker
108 * vim<600: noet sw=4 ts=4