2 #ifndef PHP_HTTP_REQUESTPOOL_H
3 #define PHP_HTTP_REQUESTPOOL_H
5 #include "php_http_request.h"
7 typedef enum php_http_request_pool_setopt_opt
{
8 PHP_HTTP_REQUEST_POOL_OPT_ENABLE_PIPELINING
,
9 PHP_HTTP_REQUEST_POOL_OPT_USE_EVENTS
,
10 } php_http_request_pool_setopt_opt_t
;
12 typedef struct php_http_request_pool php_http_request_pool_t
;
14 typedef php_http_request_pool_t
*(*php_http_request_pool_init_func_t
)(php_http_request_pool_t
*p
, void *arg
);
15 typedef php_http_request_pool_t
*(*php_http_request_pool_copy_func_t
)(php_http_request_pool_t
*from
, php_http_request_pool_t
*to
);
16 typedef void (*php_http_request_pool_dtor_func_t
)(php_http_request_pool_t
*p
);
17 typedef void (*php_http_request_pool_reset_func_t
)(php_http_request_pool_t
*p
);
18 typedef STATUS (*php_http_request_pool_exec_func_t
)(php_http_request_pool_t
*p
);
19 typedef STATUS (*php_http_request_pool_wait_func_t
)(php_http_request_pool_t
*p
, struct timeval
*custom_timeout
);
20 typedef int (*php_http_request_pool_once_func_t
)(php_http_request_pool_t
*p
);
21 typedef STATUS (*php_http_request_pool_attach_func_t
)(php_http_request_pool_t
*p
, php_http_request_t
*r
, php_http_request_method_t m
, const char *url
, php_http_message_body_t
*body
);
22 typedef STATUS (*php_http_request_pool_detach_func_t
)(php_http_request_pool_t
*p
, php_http_request_t
*r
);
23 typedef STATUS (*php_http_request_pool_setopt_func_t
)(php_http_request_pool_t
*p
, php_http_request_pool_setopt_opt_t opt
, void *arg
);
25 typedef struct php_http_request_pool_ops
{
26 php_http_request_pool_init_func_t init
;
27 php_http_request_pool_copy_func_t copy
;
28 php_http_request_pool_dtor_func_t dtor
;
29 php_http_request_pool_reset_func_t reset
;
30 php_http_request_pool_exec_func_t exec
;
31 php_http_request_pool_wait_func_t wait
;
32 php_http_request_pool_once_func_t once
;
33 php_http_request_pool_attach_func_t attach
;
34 php_http_request_pool_detach_func_t detach
;
35 php_http_request_pool_setopt_func_t setopt
;
36 } php_http_request_pool_ops_t
;
38 struct php_http_request_pool
{
40 php_http_request_pool_ops_t
*ops
;
52 PHP_HTTP_API php_http_request_pool_t
*php_http_request_pool_init(php_http_request_pool_t
*pool
, php_http_request_pool_ops_t
*ops
, void *init_arg TSRMLS_DC
);
53 PHP_HTTP_API php_http_request_pool_t
*php_http_request_pool_copy(php_http_request_pool_t
*from
, php_http_request_pool_t
*to
);
54 PHP_HTTP_API
void php_http_request_pool_dtor(php_http_request_pool_t
*pool
);
55 PHP_HTTP_API
void php_http_request_pool_free(php_http_request_pool_t
**pool
);
56 PHP_HTTP_API
void php_http_request_pool_reset(php_http_request_pool_t
*pool
);
57 PHP_HTTP_API STATUS
php_http_request_pool_exec(php_http_request_pool_t
*pool
);
58 PHP_HTTP_API STATUS
php_http_request_pool_wait(php_http_request_pool_t
*pool
, struct timeval
*custom_timeout
);
59 PHP_HTTP_API STATUS
php_http_request_pool_once(php_http_request_pool_t
*pool
);
60 PHP_HTTP_API STATUS
php_http_request_pool_attach(php_http_request_pool_t
*pool
, zval
*request
);
61 PHP_HTTP_API STATUS
php_http_request_pool_detach(php_http_request_pool_t
*pool
, zval
*request
);
62 PHP_HTTP_API STATUS
php_http_request_pool_setopt(php_http_request_pool_t
*pool
, php_http_request_pool_setopt_opt_t opt
, void *arg
);
63 PHP_HTTP_API
void php_http_request_pool_requests(php_http_request_pool_t
*h
, zval
***attached
, zval
***finished
);
65 typedef struct php_http_request_pool_object
{
67 php_http_request_pool_t
*pool
;
71 } php_http_request_pool_object_t
;
73 extern zend_class_entry
*php_http_request_pool_class_entry
;
74 extern zend_function_entry php_http_request_pool_method_entry
[];
76 extern zend_object_value
php_http_request_pool_object_new(zend_class_entry
*ce TSRMLS_DC
);
77 extern zend_object_value
php_http_request_pool_object_new_ex(zend_class_entry
*ce
, php_http_request_pool_t
*p
, php_http_request_pool_object_t
**ptr TSRMLS_DC
);
78 extern void php_http_request_pool_object_free(void *object TSRMLS_DC
);
80 PHP_METHOD(HttpRequestPool
, __construct
);
81 PHP_METHOD(HttpRequestPool
, __destruct
);
82 PHP_METHOD(HttpRequestPool
, attach
);
83 PHP_METHOD(HttpRequestPool
, detach
);
84 PHP_METHOD(HttpRequestPool
, send
);
85 PHP_METHOD(HttpRequestPool
, reset
);
86 PHP_METHOD(HttpRequestPool
, once
);
87 PHP_METHOD(HttpRequestPool
, wait
);
88 PHP_METHOD(HttpRequestPool
, valid
);
89 PHP_METHOD(HttpRequestPool
, current
);
90 PHP_METHOD(HttpRequestPool
, key
);
91 PHP_METHOD(HttpRequestPool
, next
);
92 PHP_METHOD(HttpRequestPool
, rewind
);
93 PHP_METHOD(HttpRequestPool
, count
);
94 PHP_METHOD(HttpRequestPool
, getAttachedRequests
);
95 PHP_METHOD(HttpRequestPool
, getFinishedRequests
);
96 PHP_METHOD(HttpRequestPool
, enablePipelining
);
97 PHP_METHOD(HttpRequestPool
, enableEvents
);
99 PHP_MINIT_FUNCTION(http_request_pool
);
101 #endif /* PHP_HTTP_REQUESTPOOL_H */