fix for changed shutdown order in PHP-7.4
[m6w6/ext-http] / src / php_http_client.h
index 792581a4da017906ffa05b5e550069b39a0b2157..fd77204fc6a53b772931b7ec36931f8486c20835 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);
@@ -90,6 +91,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,19 +114,29 @@ 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;
 } 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 {
        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;