1 #ifndef PHP_HTTP_CLIENT_H
2 #define PHP_HTTP_CLIENT_H
4 typedef enum php_http_client_setopt_opt
{
5 PHP_HTTP_CLIENT_OPT_ENABLE_PIPELINING
,
6 PHP_HTTP_CLIENT_OPT_USE_EVENTS
,
7 } php_http_client_setopt_opt_t
;
9 typedef enum php_http_client_getopt_opt
{
10 PHP_HTTP_CLIENT_OPT_PROGRESS_INFO
, /* php_http_client_progress_state_t** */
11 PHP_HTTP_CLIENT_OPT_TRANSFER_INFO
, /* HashTable* */
12 } php_http_client_getopt_opt_t
;
14 typedef struct php_http_client_enqueue
{
15 php_http_message_t
*request
; /* unique */
17 void (*dtor
)(struct php_http_client_enqueue
*);
21 zend_fcall_info_cache fcc
;
23 } php_http_client_enqueue_t
;
25 typedef struct php_http_client
*(*php_http_client_init_func_t
)(struct php_http_client
*p
, void *init_arg
);
26 typedef struct php_http_client
*(*php_http_client_copy_func_t
)(struct php_http_client
*from
, struct php_http_client
*to
);
27 typedef void (*php_http_client_dtor_func_t
)(struct php_http_client
*p
);
28 typedef void (*php_http_client_reset_func_t
)(struct php_http_client
*p
);
29 typedef STATUS (*php_http_client_exec_func_t
)(struct php_http_client
*p
);
30 typedef int (*php_http_client_once_func_t
)(struct php_http_client
*p
);
31 typedef STATUS (*php_http_client_wait_func_t
)(struct php_http_client
*p
, struct timeval
*custom_timeout
);
32 typedef STATUS (*php_http_client_enqueue_func_t
)(struct php_http_client
*p
, php_http_client_enqueue_t
*enqueue
);
33 typedef STATUS (*php_http_client_dequeue_func_t
)(struct php_http_client
*p
, php_http_client_enqueue_t
*enqueue
);
34 typedef STATUS (*php_http_client_setopt_func_t
)(struct php_http_client
*p
, php_http_client_setopt_opt_t opt
, void *arg
);
35 typedef STATUS (*php_http_client_getopt_func_t
)(struct php_http_client
*h
, php_http_client_getopt_opt_t opt
, void *arg
, void **res
);
37 typedef struct php_http_client_ops
{
38 php_resource_factory_ops_t
*rsrc
;
39 php_http_client_init_func_t init
;
40 php_http_client_copy_func_t copy
;
41 php_http_client_dtor_func_t dtor
;
42 php_http_client_reset_func_t reset
;
43 php_http_client_exec_func_t exec
;
44 php_http_client_wait_func_t wait
;
45 php_http_client_once_func_t once
;
46 php_http_client_enqueue_func_t enqueue
;
47 php_http_client_dequeue_func_t dequeue
;
48 php_http_client_setopt_func_t setopt
;
49 php_http_client_getopt_func_t getopt
;
50 } php_http_client_ops_t
;
52 typedef struct php_http_client_driver
{
53 php_http_client_ops_t
*client_ops
;
54 } php_http_client_driver_t
;
56 PHP_HTTP_API STATUS
php_http_client_driver_add(const char *name_str
, uint name_len
, php_http_client_driver_t
*driver
);
57 PHP_HTTP_API STATUS
php_http_client_driver_get(char **name_str
, uint
*name_len
, php_http_client_driver_t
*driver
);
59 typedef struct php_http_client_progress_state
{
71 } php_http_client_progress_state_t
;
73 typedef STATUS (*php_http_client_response_callback_t
)(void *arg
, struct php_http_client
*client
, php_http_client_enqueue_t
*e
, php_http_message_t
**request
, php_http_message_t
**response
);
74 typedef void (*php_http_client_progress_callback_t
)(void *arg
, struct php_http_client
*client
, php_http_client_enqueue_t
*e
, php_http_client_progress_state_t
*state
);
76 typedef struct php_http_client
{
78 php_resource_factory_t
*rf
;
79 php_http_client_ops_t
*ops
;
83 php_http_client_response_callback_t func
;
87 php_http_client_progress_callback_t func
;
100 zend_class_entry
*php_http_client_class_entry
;
102 typedef struct php_http_client_object
{
104 zend_object_value zv
;
105 php_http_client_t
*client
;
107 } php_http_client_object_t
;
109 PHP_HTTP_API php_http_client_t
*php_http_client_init(php_http_client_t
*h
, php_http_client_ops_t
*ops
, php_resource_factory_t
*rf
, void *init_arg TSRMLS_DC
);
110 PHP_HTTP_API php_http_client_t
*php_http_client_copy(php_http_client_t
*from
, php_http_client_t
*to
);
111 PHP_HTTP_API
void php_http_client_dtor(php_http_client_t
*h
);
112 PHP_HTTP_API
void php_http_client_free(php_http_client_t
**h
);
114 PHP_HTTP_API STATUS
php_http_client_enqueue(php_http_client_t
*h
, php_http_client_enqueue_t
*enqueue
);
115 PHP_HTTP_API STATUS
php_http_client_dequeue(php_http_client_t
*h
, php_http_message_t
*request
);
117 PHP_HTTP_API STATUS
php_http_client_wait(php_http_client_t
*h
, struct timeval
*custom_timeout
);
118 PHP_HTTP_API
int php_http_client_once(php_http_client_t
*h
);
120 PHP_HTTP_API STATUS
php_http_client_exec(php_http_client_t
*h
);
121 PHP_HTTP_API
void php_http_client_reset(php_http_client_t
*h
);
123 PHP_HTTP_API STATUS
php_http_client_setopt(php_http_client_t
*h
, php_http_client_setopt_opt_t opt
, void *arg
);
124 PHP_HTTP_API STATUS
php_http_client_getopt(php_http_client_t
*h
, php_http_client_getopt_opt_t opt
, void *arg
, void *res_ptr
);
126 typedef int (*php_http_client_enqueue_cmp_func_t
)(php_http_client_enqueue_t
*cmp
, void *arg
);
127 /* compare with request message pointer if compare_func is NULL */
128 PHP_HTTP_API php_http_client_enqueue_t
*php_http_client_enqueued(php_http_client_t
*h
, void *compare_arg
, php_http_client_enqueue_cmp_func_t compare_func
);
130 PHP_MINIT_FUNCTION(http_client
);
131 PHP_MSHUTDOWN_FUNCTION(http_client
);