- avoid lots of useless ops
[m6w6/ext-http] / php_http_request_api.h
index 202bb0b9d8f5e91f9fe144106193bf0bcd1480fb..3ff2769a9db82413c91d59663f598fd0a07d7904 100644 (file)
 
 #include <curl/curl.h>
 
+#define http_request_global_init() _http_request_global_init(INIT_FUNC_ARGS_PASSTHRU)
+extern STATUS _http_request_global_init(INIT_FUNC_ARGS);
+#define http_request_global_cleanup() _http_request_global_cleanup(TSRMLS_C)
+extern void _http_request_global_cleanup(TSRMLS_D);
+
 #define HTTP_REQUEST_BODY_CSTRING              1
 #define HTTP_REQUEST_BODY_CURLPOST             2
 #define HTTP_REQUEST_BODY_UPLOADFILE   3
@@ -42,13 +47,23 @@ typedef struct {
 typedef struct {
        void ***tsrm_ctx;
        void *data;
-} http_curl_callback_ctx;
+} http_request_callback_ctx;
 
 typedef struct {
        phpstr *response;
        phpstr *request;
        curl_infotype last_info;
-} http_curl_conv;
+} http_request_conv;
+
+#define HTTP_REQUEST_CALLBACK_DATA(from, type, var) \
+       http_request_callback_ctx *__CTX = (http_request_callback_ctx *) (from); \
+       TSRMLS_FETCH_FROM_CTX(__CTX->tsrm_ctx); \
+       type (var) = (type) (__CTX->data)
+
+#define http_request_callback_data(data) _http_request_callback_data_ex((data), 1 TSRMLS_CC)
+#define http_request_callback_data_ex(data, copy) _http_request_callback_data_ex((data), (copy) TSRMLS_CC)
+extern http_request_callback_ctx *_http_request_callback_data_ex(void *data, zend_bool cpy TSRMLS_DC);
+
 
 #define COPY_STRING            1
 #define        COPY_SLIST              2