followup to #122
[m6w6/ext-http] / src / php_http_client.h
index 6aa8abf282f6da9f0afe1a6d519ba22eb31afb4b..da53b4d717a744820b4e27129091fe849b100055 100644 (file)
@@ -35,6 +35,7 @@ typedef struct php_http_client_enqueue {
                zend_fcall_info fci;
                zend_fcall_info_cache fcc;
        } closure;
+       php_http_message_object_t *request_obj; /* supplemental to request */
 } php_http_client_enqueue_t;
 
 typedef struct php_http_client *(*php_http_client_init_func_t)(struct php_http_client *p, void *init_arg);
@@ -46,6 +47,7 @@ typedef int (*php_http_client_once_func_t)(struct php_http_client *p);
 typedef ZEND_RESULT_CODE (*php_http_client_wait_func_t)(struct php_http_client *p, struct timeval *custom_timeout);
 typedef ZEND_RESULT_CODE (*php_http_client_enqueue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
 typedef ZEND_RESULT_CODE (*php_http_client_dequeue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
+typedef ZEND_RESULT_CODE (*php_http_client_requeue_func_t)(struct php_http_client *p, php_http_client_enqueue_t *enqueue);
 typedef ZEND_RESULT_CODE (*php_http_client_setopt_func_t)(struct php_http_client *p, php_http_client_setopt_opt_t opt, void *arg);
 typedef ZEND_RESULT_CODE (*php_http_client_getopt_func_t)(struct php_http_client *h, php_http_client_getopt_opt_t opt, void *arg, void **res);
 
@@ -60,6 +62,7 @@ typedef struct php_http_client_ops {
        php_http_client_once_func_t once;
        php_http_client_enqueue_func_t enqueue;
        php_http_client_dequeue_func_t dequeue;
+       php_http_client_requeue_func_t requeue;
        php_http_client_setopt_func_t setopt;
        php_http_client_getopt_func_t getopt;
 } php_http_client_ops_t;
@@ -90,6 +93,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;
@@ -105,6 +116,11 @@ 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;
@@ -117,7 +133,12 @@ typedef struct php_http_client_object {
        php_http_client_t *client;
        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;