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_CLIENT_POOL_H
14 #define PHP_HTTP_CLIENT_POOL_H
16 typedef enum php_http_client_pool_setopt_opt
{
17 PHP_HTTP_CLIENT_POOL_OPT_ENABLE_PIPELINING
,
18 PHP_HTTP_CLIENT_POOL_OPT_USE_EVENTS
,
19 } php_http_client_pool_setopt_opt_t
;
21 typedef struct php_http_client_pool
*(*php_http_client_pool_init_func_t
)(struct php_http_client_pool
*p
, void *arg
);
22 typedef struct php_http_client_pool
*(*php_http_client_pool_copy_func_t
)(struct php_http_client_pool
*from
, struct php_http_client_pool
*to
);
23 typedef void (*php_http_client_pool_dtor_func_t
)(struct php_http_client_pool
*p
);
24 typedef void (*php_http_client_pool_reset_func_t
)(struct php_http_client_pool
*p
);
25 typedef STATUS (*php_http_client_pool_exec_func_t
)(struct php_http_client_pool
*p
);
26 typedef STATUS (*php_http_client_pool_wait_func_t
)(struct php_http_client_pool
*p
, struct timeval
*custom_timeout
);
27 typedef int (*php_http_client_pool_once_func_t
)(struct php_http_client_pool
*p
);
28 typedef STATUS (*php_http_client_pool_attach_func_t
)(struct php_http_client_pool
*p
, php_http_client_t
*r
, php_http_message_t
*msg
);
29 typedef STATUS (*php_http_client_pool_detach_func_t
)(struct php_http_client_pool
*p
, php_http_client_t
*r
);
30 typedef STATUS (*php_http_client_pool_setopt_func_t
)(struct php_http_client_pool
*p
, php_http_client_pool_setopt_opt_t opt
, void *arg
);
32 typedef struct php_http_client_pool_ops
{
33 php_http_resource_factory_ops_t
*rsrc
;
34 php_http_client_pool_init_func_t init
;
35 php_http_client_pool_copy_func_t copy
;
36 php_http_client_pool_dtor_func_t dtor
;
37 php_http_client_pool_reset_func_t reset
;
38 php_http_client_pool_exec_func_t exec
;
39 php_http_client_pool_wait_func_t wait
;
40 php_http_client_pool_once_func_t once
;
41 php_http_client_pool_attach_func_t attach
;
42 php_http_client_pool_detach_func_t detach
;
43 php_http_client_pool_setopt_func_t setopt
;
44 php_http_new_t create_object
;
45 zend_class_entry
*(*class_entry
)(void);
46 } php_http_client_pool_ops_t
;
48 typedef struct php_http_client_pool
{
50 php_http_resource_factory_t
*rf
;
51 php_http_client_pool_ops_t
*ops
;
54 php_http_client_t
*master
;
62 } php_http_client_pool_t
;
64 PHP_HTTP_API php_http_client_pool_t
*php_http_client_pool_init(php_http_client_pool_t
*pool
, php_http_client_pool_ops_t
*ops
, php_http_resource_factory_t
*rf
, void *init_arg TSRMLS_DC
);
65 PHP_HTTP_API php_http_client_pool_t
*php_http_client_pool_copy(php_http_client_pool_t
*from
, php_http_client_pool_t
*to
);
66 PHP_HTTP_API
void php_http_client_pool_dtor(php_http_client_pool_t
*pool
);
67 PHP_HTTP_API
void php_http_client_pool_free(php_http_client_pool_t
**pool
);
68 PHP_HTTP_API
void php_http_client_pool_reset(php_http_client_pool_t
*pool
);
69 PHP_HTTP_API STATUS
php_http_client_pool_exec(php_http_client_pool_t
*pool
);
70 PHP_HTTP_API STATUS
php_http_client_pool_wait(php_http_client_pool_t
*pool
, struct timeval
*custom_timeout
);
71 PHP_HTTP_API STATUS
php_http_client_pool_once(php_http_client_pool_t
*pool
);
72 PHP_HTTP_API STATUS
php_http_client_pool_attach(php_http_client_pool_t
*pool
, zval
*request
);
73 PHP_HTTP_API STATUS
php_http_client_pool_detach(php_http_client_pool_t
*pool
, zval
*request
);
74 PHP_HTTP_API STATUS
php_http_client_pool_setopt(php_http_client_pool_t
*pool
, php_http_client_pool_setopt_opt_t opt
, void *arg
);
75 PHP_HTTP_API
void php_http_client_pool_requests(php_http_client_pool_t
*h
, zval
***attached
, zval
***finished
);
77 typedef struct php_http_client_pool_object
{
79 php_http_client_pool_t
*pool
;
80 zend_object_value client
;
84 } php_http_client_pool_object_t
;
86 zend_object_value
php_http_client_pool_object_new(zend_class_entry
*ce TSRMLS_DC
);
87 zend_object_value
php_http_client_pool_object_new_ex(zend_class_entry
*ce
, php_http_client_pool_t
*p
, php_http_client_pool_object_t
**ptr TSRMLS_DC
);
88 void php_http_client_pool_object_free(void *object TSRMLS_DC
);
90 zend_class_entry
*php_http_client_pool_get_class_entry(void);
91 zend_object_handlers
*php_http_client_pool_get_object_handlers(void);
93 PHP_METHOD(HttpClientPool
, __destruct
);
94 PHP_METHOD(HttpClientPool
, attach
);
95 PHP_METHOD(HttpClientPool
, detach
);
96 PHP_METHOD(HttpClientPool
, send
);
97 PHP_METHOD(HttpClientPool
, reset
);
98 PHP_METHOD(HttpClientPool
, once
);
99 PHP_METHOD(HttpClientPool
, wait
);
100 PHP_METHOD(HttpClientPool
, valid
);
101 PHP_METHOD(HttpClientPool
, current
);
102 PHP_METHOD(HttpClientPool
, key
);
103 PHP_METHOD(HttpClientPool
, next
);
104 PHP_METHOD(HttpClientPool
, rewind
);
105 PHP_METHOD(HttpClientPool
, count
);
106 PHP_METHOD(HttpClientPool
, getAttached
);
107 PHP_METHOD(HttpClientPool
, getFinished
);
108 PHP_METHOD(HttpClientPool
, enablePipelining
);
109 PHP_METHOD(HttpClientPool
, enableEvents
);
111 PHP_MINIT_FUNCTION(http_client_pool
);
113 #endif /* PHP_HTTP_CLIENT_POOL_H */
120 * vim600: noet sw=4 ts=4 fdm=marker
121 * vim<600: noet sw=4 ts=4