X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client.h;h=0edd1bb1d29d466652a5dc77d89c3b3e9a156c5b;hp=f4a5b59138632810b4d108ce8cafde05e84a4edf;hb=d5c7f974d81c724c6fad8b54f1c37ce0795119de;hpb=bdd6edb59194cda9e5fcb393c48ab4230fceb32a diff --git a/src/php_http_client.h b/src/php_http_client.h index f4a5b59..0edd1bb 100644 --- a/src/php_http_client.h +++ b/src/php_http_client.h @@ -65,13 +65,14 @@ typedef struct php_http_client_ops { } php_http_client_ops_t; typedef struct php_http_client_driver { - const char *name_str; - size_t name_len; + zend_string *driver_name; + zend_string *client_name; + zend_string *request_name; php_http_client_ops_t *client_ops; } php_http_client_driver_t; PHP_HTTP_API ZEND_RESULT_CODE php_http_client_driver_add(php_http_client_driver_t *driver); -PHP_HTTP_API ZEND_RESULT_CODE php_http_client_driver_get(const char *name_str, size_t name_len, php_http_client_driver_t *driver); +PHP_HTTP_API php_http_client_driver_t *php_http_client_driver_get(zend_string *name); typedef struct php_http_client_progress_state { struct { @@ -89,6 +90,14 @@ typedef struct php_http_client_progress_state { typedef ZEND_RESULT_CODE (*php_http_client_response_callback_t)(void *arg, struct php_http_client *client, php_http_client_enqueue_t *e, php_http_message_t **response); 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); +typedef void (*php_http_client_debug_callback_t)(void *arg, struct php_http_client *client, php_http_client_enqueue_t *e, unsigned type, const char *data, size_t size); + +#define PHP_HTTP_CLIENT_DEBUG_INFO 0x00 +#define PHP_HTTP_CLIENT_DEBUG_IN 0x01 +#define PHP_HTTP_CLIENT_DEBUG_OUT 0x02 +#define PHP_HTTP_CLIENT_DEBUG_HEADER 0x10 +#define PHP_HTTP_CLIENT_DEBUG_BODY 0x20 +#define PHP_HTTP_CLIENT_DEBUG_SSL 0x40 typedef struct php_http_client { void *ctx; @@ -104,28 +113,33 @@ typedef struct php_http_client { php_http_client_progress_callback_t func; void *arg; } progress; + struct { + php_http_client_debug_callback_t func; + void *arg; + } debug; + unsigned depth; } callback; zend_llist requests; zend_llist responses; - -#ifdef ZTS - void ***ts; -#endif } php_http_client_t; -PHP_HTTP_API zend_class_entry *php_http_client_class_entry; +PHP_HTTP_API zend_class_entry *php_http_client_get_class_entry(); typedef struct php_http_client_object { - zend_object zo; - zend_object_value zv; php_http_client_t *client; - long iterator; php_http_object_method_t *update; php_http_object_method_t notify; + struct { + zend_fcall_info fci; + zend_fcall_info_cache fcc; + } debug; + long iterator; + zval *gc; + zend_object zo; } php_http_client_object_t; -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); +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); PHP_HTTP_API php_http_client_t *php_http_client_copy(php_http_client_t *from, php_http_client_t *to); PHP_HTTP_API void php_http_client_dtor(php_http_client_t *h); PHP_HTTP_API void php_http_client_free(php_http_client_t **h);