2 #ifndef PHP_HTTP_REQUESTPOOL_H
3 #define PHP_HTTP_REQUESTPOOL_H
7 struct php_http_request_pool_globals
{
11 typedef struct php_http_request_pool
{
15 int unfinished
; /* int because of curl_multi_perform() */
19 #ifdef PHP_HTTP_HAVE_EVENT
20 struct event
*timeout
;
24 } php_http_request_pool_t
;
26 typedef int (*php_http_request_pool_apply_func_t
)(php_http_request_pool_t
*pool
, zval
*request
);
27 typedef int (*php_http_request_pool_apply_with_arg_func_t
)(php_http_request_pool_t
*pool
, zval
*request
, void *arg
);
29 #ifdef PHP_HTTP_HAVE_EVENT
30 PHP_RINIT_FUNCTION(php_http_request_pool
);
33 extern struct timeval
*php_http_request_pool_timeout(php_http_request_pool_t
*pool
, struct timeval
*timeout
);
34 extern void php_http_request_pool_responsehandler(php_http_request_pool_t
*pool
);
35 extern int php_http_request_pool_apply_responsehandler(php_http_request_pool_t
*pool
, zval
*req
, void *ch
);
37 PHP_HTTP_API php_http_request_pool_t
*php_http_request_pool_init(php_http_request_pool_t
*pool TSRMLS_DC
);
38 PHP_HTTP_API STATUS
php_http_request_pool_attach(php_http_request_pool_t
*pool
, zval
*request
);
39 PHP_HTTP_API STATUS
php_http_request_pool_detach(php_http_request_pool_t
*pool
, zval
*request
);
40 PHP_HTTP_API
void php_http_request_pool_apply(php_http_request_pool_t
*pool
, php_http_request_pool_apply_func_t cb
);
41 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
);
42 PHP_HTTP_API
void php_http_request_pool_detach_all(php_http_request_pool_t
*pool
);
43 PHP_HTTP_API STATUS
php_http_request_pool_send(php_http_request_pool_t
*pool
);
44 PHP_HTTP_API STATUS
php_http_request_pool_select(php_http_request_pool_t
*pool
, struct timeval
*custom_timeout
);
45 PHP_HTTP_API
int php_http_request_pool_perform(php_http_request_pool_t
*pool
);
46 PHP_HTTP_API
void php_http_request_pool_dtor(php_http_request_pool_t
*pool
);
47 PHP_HTTP_API
void php_http_request_pool_free(php_http_request_pool_t
**pool
);
49 typedef struct php_http_request_pool_object
{
51 php_http_request_pool_t pool
;
55 } php_http_request_pool_object_t
;
57 extern zend_class_entry
*php_http_request_pool_class_entry
;
58 extern zend_function_entry php_http_request_pool_method_entry
[];
60 extern zend_object_value
php_http_request_pool_object_new(zend_class_entry
*ce TSRMLS_DC
);
61 extern void php_http_request_pool_object_free(void *object TSRMLS_DC
);
63 PHP_METHOD(HttpRequestPool
, __construct
);
64 PHP_METHOD(HttpRequestPool
, __destruct
);
65 PHP_METHOD(HttpRequestPool
, attach
);
66 PHP_METHOD(HttpRequestPool
, detach
);
67 PHP_METHOD(HttpRequestPool
, send
);
68 PHP_METHOD(HttpRequestPool
, reset
);
69 PHP_METHOD(HttpRequestPool
, socketPerform
);
70 PHP_METHOD(HttpRequestPool
, socketSelect
);
71 PHP_METHOD(HttpRequestPool
, valid
);
72 PHP_METHOD(HttpRequestPool
, current
);
73 PHP_METHOD(HttpRequestPool
, key
);
74 PHP_METHOD(HttpRequestPool
, next
);
75 PHP_METHOD(HttpRequestPool
, rewind
);
76 PHP_METHOD(HttpRequestPool
, count
);
77 PHP_METHOD(HttpRequestPool
, getAttachedRequests
);
78 PHP_METHOD(HttpRequestPool
, getFinishedRequests
);
79 PHP_METHOD(HttpRequestPool
, enablePipelining
);
80 PHP_METHOD(HttpRequestPool
, enableEvents
);
82 PHP_MINIT_FUNCTION(http_request_pool
);
83 PHP_RINIT_FUNCTION(http_request_pool
);
85 #endif /* PHP_HTTP_REQUESTPOOL_H */