X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_env_response.h;h=ae1441d37fab8032ba577c14088bbbf4218ce051;hp=ab5ee5c2c12d54305442eebeed128d3b93fd6d95;hb=6116c2d8303b5301d927083af4dc763f952ab3ea;hpb=3de3e5f65db0e7c24849c0e7c60c54a4e8566422 diff --git a/php_http_env_response.h b/php_http_env_response.h index ab5ee5c..ae1441d 100644 --- a/php_http_env_response.h +++ b/php_http_env_response.h @@ -6,16 +6,39 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2011, Michael Wallner | + | Copyright (c) 2004-2014, Michael Wallner | +--------------------------------------------------------------------+ */ #ifndef PHP_HTTP_ENV_RESPONSE_H #define PHP_HTTP_ENV_RESPONSE_H -typedef struct php_http_env_response { +typedef struct php_http_env_response php_http_env_response_t; + +typedef struct php_http_env_response_ops { + ZEND_RESULT_CODE (*init)(php_http_env_response_t *r, void *arg); + void (*dtor)(php_http_env_response_t *r); + long (*get_status)(php_http_env_response_t *r); + ZEND_RESULT_CODE (*set_status)(php_http_env_response_t *r, long http_code); + ZEND_RESULT_CODE (*set_protocol_version)(php_http_env_response_t *r, php_http_version_t *v); + ZEND_RESULT_CODE (*set_header)(php_http_env_response_t *r, const char *fmt, ...); + ZEND_RESULT_CODE (*add_header)(php_http_env_response_t *r, const char *fmt, ...); + ZEND_RESULT_CODE (*del_header)(php_http_env_response_t *r, const char *header_str, size_t header_len); + ZEND_RESULT_CODE (*write)(php_http_env_response_t *r, const char *data_str, size_t data_len); + ZEND_RESULT_CODE (*flush)(php_http_env_response_t *r); + ZEND_RESULT_CODE (*finish)(php_http_env_response_t *r); +} php_http_env_response_ops_t; + +PHP_HTTP_API php_http_env_response_ops_t *php_http_env_response_get_sapi_ops(void); +PHP_HTTP_API php_http_env_response_ops_t *php_http_env_response_get_stream_ops(void); + +struct php_http_env_response { + void *ctx; + php_http_env_response_ops_t *ops; + + php_http_cookie_list_t *cookies; php_http_buffer_t *buffer; - zval *options; + zval options; struct { size_t chunk; @@ -37,37 +60,17 @@ typedef struct php_http_env_response { } content; zend_bool done; +}; -#ifdef ZTS - void ***ts; -#endif -} php_http_env_response_t; - -PHP_HTTP_API php_http_env_response_t *php_http_env_response_init(php_http_env_response_t *r, zval *options TSRMLS_DC); -PHP_HTTP_API STATUS php_http_env_response_send(php_http_env_response_t *r); +PHP_HTTP_API php_http_env_response_t *php_http_env_response_init(php_http_env_response_t *r, zval *options, php_http_env_response_ops_t *ops, void *ops_ctx); +PHP_HTTP_API ZEND_RESULT_CODE php_http_env_response_send(php_http_env_response_t *r); PHP_HTTP_API void php_http_env_response_dtor(php_http_env_response_t *r); PHP_HTTP_API void php_http_env_response_free(php_http_env_response_t **r); -PHP_HTTP_API php_http_cache_status_t php_http_env_is_response_cached_by_etag(zval *options, const char *header_str, size_t header_len TSRMLS_DC); -PHP_HTTP_API php_http_cache_status_t php_http_env_is_response_cached_by_last_modified(zval *options, const char *header_str, size_t header_len TSRMLS_DC); - -extern zend_class_entry *php_http_env_response_class_entry; -extern zend_function_entry php_http_env_response_method_entry[]; - -PHP_METHOD(HttpEnvResponse, __construct); -PHP_METHOD(HttpEnvResponse, __invoke); -PHP_METHOD(HttpEnvResponse, setContentType); -PHP_METHOD(HttpEnvResponse, setContentDisposition); -PHP_METHOD(HttpEnvResponse, setContentEncoding); -PHP_METHOD(HttpEnvResponse, setCacheControl); -PHP_METHOD(HttpEnvResponse, setLastModified); -PHP_METHOD(HttpEnvResponse, isCachedByLastModified); -PHP_METHOD(HttpEnvResponse, setEtag); -PHP_METHOD(HttpEnvResponse, isCachedByEtag); -PHP_METHOD(HttpEnvResponse, setThrottleRate); -PHP_METHOD(HttpEnvResponse, send); - +PHP_HTTP_API php_http_cache_status_t php_http_env_is_response_cached_by_etag(zval *options, const char *header_str, size_t header_len, php_http_message_t *request); +PHP_HTTP_API php_http_cache_status_t php_http_env_is_response_cached_by_last_modified(zval *options, const char *header_str, size_t header_len, php_http_message_t *request); +PHP_HTTP_API zend_class_entry *php_http_env_response_class_entry; PHP_MINIT_FUNCTION(http_env_response); #endif