2 #ifndef PHP_HTTP_REQUESTPOOL_H
3 #define PHP_HTTP_REQUESTPOOL_H
5 struct php_http_request_pool_globals
{
9 typedef struct php_http_request_pool
{
13 int unfinished
; /* int because of curl_multi_perform() */
17 #ifdef PHP_HTTP_HAVE_EVENT
18 struct event
*timeout
;
22 } php_http_request_pool_t
;
24 typedef int (*php_http_request_pool_apply_func_t
)(php_http_request_pool_t
*pool
, zval
*request
);
25 typedef int (*php_http_request_pool_apply_with_arg_func_t
)(php_http_request_pool_t
*pool
, zval
*request
, void *arg
);
27 #ifdef PHP_HTTP_HAVE_EVENT
28 PHP_RINIT_FUNCTION(php_http_request_pool
);
31 extern struct timeval
*php_http_request_pool_timeout(php_http_request_pool_t
*pool
, struct timeval
*timeout
);
32 extern void php_http_request_pool_responsehandler(php_http_request_pool_t
*pool
);
33 extern int php_http_request_pool_apply_responsehandler(php_http_request_pool_t
*pool
, zval
*req
, void *ch
);
35 PHP_HTTP_API php_http_request_pool_t
*php_http_request_pool_init(php_http_request_pool_t
*pool TSRMLS_DC
);
36 PHP_HTTP_API STATUS
php_http_request_pool_attach(php_http_request_pool_t
*pool
, zval
*request
);
37 PHP_HTTP_API STATUS
php_http_request_pool_detach(php_http_request_pool_t
*pool
, zval
*request
);
38 PHP_HTTP_API
void php_http_request_pool_apply(php_http_request_pool_t
*pool
, php_http_request_pool_apply_func_t cb
);
39 PHP_HTTP_API
void php_http_request_pool_apply_with_arg(php_http_request_pool_t
*pool
, php_http_request_pool_apply_with_arg_func_t cb
, void *arg
);
40 PHP_HTTP_API
void php_http_request_pool_detach_all(php_http_request_pool_t
*pool
);
41 PHP_HTTP_API STATUS
php_http_request_pool_send(php_http_request_pool_t
*pool
);
42 PHP_HTTP_API STATUS
php_http_request_pool_select(php_http_request_pool_t
*pool
, struct timeval
*custom_timeout
);
43 PHP_HTTP_API
int php_http_request_pool_perform(php_http_request_pool_t
*pool
);
44 PHP_HTTP_API
void php_http_request_pool_dtor(php_http_request_pool_t
*pool
);
45 PHP_HTTP_API
void php_http_request_pool_free(php_http_request_pool_t
**pool
);
47 typedef struct php_http_request_pool_object
{
49 php_http_request_pool_t pool
;
53 } php_http_request_pool_object_t
;
55 extern zend_class_entry
*php_http_request_pool_class_entry
;
56 extern zend_function_entry php_http_request_pool_method_entry
[];
58 extern zend_object_value
php_http_request_pool_object_new(zend_class_entry
*ce TSRMLS_DC
);
59 extern void php_http_request_pool_object_free(void *object TSRMLS_DC
);
61 PHP_METHOD(HttpRequestPool
, __construct
);
62 PHP_METHOD(HttpRequestPool
, __destruct
);
63 PHP_METHOD(HttpRequestPool
, attach
);
64 PHP_METHOD(HttpRequestPool
, detach
);
65 PHP_METHOD(HttpRequestPool
, send
);
66 PHP_METHOD(HttpRequestPool
, reset
);
67 PHP_METHOD(HttpRequestPool
, socketPerform
);
68 PHP_METHOD(HttpRequestPool
, socketSelect
);
69 PHP_METHOD(HttpRequestPool
, valid
);
70 PHP_METHOD(HttpRequestPool
, current
);
71 PHP_METHOD(HttpRequestPool
, key
);
72 PHP_METHOD(HttpRequestPool
, next
);
73 PHP_METHOD(HttpRequestPool
, rewind
);
74 PHP_METHOD(HttpRequestPool
, count
);
75 PHP_METHOD(HttpRequestPool
, getAttachedRequests
);
76 PHP_METHOD(HttpRequestPool
, getFinishedRequests
);
77 PHP_METHOD(HttpRequestPool
, enablePipelining
);
78 PHP_METHOD(HttpRequestPool
, enableEvents
);
80 PHP_MINIT_FUNCTION(http_request_pool
);
81 PHP_RINIT_FUNCTION(http_request_pool
);
83 #endif /* PHP_HTTP_REQUESTPOOL_H */