split off property proxy
[m6w6/ext-http] / php_http_env_response.h
1 /*
2 +--------------------------------------------------------------------+
3 | PECL :: http |
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2004-2011, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
11 */
12
13 #ifndef PHP_HTTP_ENV_RESPONSE_H
14 #define PHP_HTTP_ENV_RESPONSE_H
15
16 typedef struct php_http_env_response php_http_env_response_t;
17
18 typedef struct php_http_env_response_ops {
19 STATUS (*init)(php_http_env_response_t *r, void *arg);
20 void (*dtor)(php_http_env_response_t *r);
21 long (*get_status)(php_http_env_response_t *r);
22 STATUS (*set_status)(php_http_env_response_t *r, long http_code);
23 STATUS (*set_protocol_version)(php_http_env_response_t *r, php_http_version_t *v);
24 STATUS (*set_header)(php_http_env_response_t *r, const char *fmt, ...);
25 STATUS (*add_header)(php_http_env_response_t *r, const char *fmt, ...);
26 STATUS (*del_header)(php_http_env_response_t *r, const char *header_str, size_t header_len);
27 STATUS (*write)(php_http_env_response_t *r, const char *data_str, size_t data_len);
28 STATUS (*flush)(php_http_env_response_t *r);
29 STATUS (*finish)(php_http_env_response_t *r);
30 } php_http_env_response_ops_t;
31
32 PHP_HTTP_API php_http_env_response_ops_t *php_http_env_response_get_sapi_ops(void);
33 PHP_HTTP_API php_http_env_response_ops_t *php_http_env_response_get_stream_ops(void);
34
35 struct php_http_env_response {
36 void *ctx;
37 php_http_env_response_ops_t *ops;
38
39 php_http_buffer_t *buffer;
40 zval *options;
41
42 struct {
43 size_t chunk;
44 double delay;
45 } throttle;
46
47 struct {
48 php_http_range_status_t status;
49 HashTable values;
50 char boundary[32];
51 } range;
52
53 struct {
54 size_t length;
55 char *type;
56 char *encoding;
57
58 php_http_encoding_stream_t *encoder;
59 } content;
60
61 zend_bool done;
62
63 #ifdef ZTS
64 void ***ts;
65 #endif
66 };
67
68 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 TSRMLS_DC);
69 PHP_HTTP_API STATUS php_http_env_response_send(php_http_env_response_t *r);
70 PHP_HTTP_API void php_http_env_response_dtor(php_http_env_response_t *r);
71 PHP_HTTP_API void php_http_env_response_free(php_http_env_response_t **r);
72
73 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 TSRMLS_DC);
74 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 TSRMLS_DC);
75
76 zend_class_entry *php_http_env_response_get_class_entry(void);
77
78 PHP_METHOD(HttpEnvResponse, __construct);
79 PHP_METHOD(HttpEnvResponse, __invoke);
80 PHP_METHOD(HttpEnvResponse, setEnvRequest);
81 PHP_METHOD(HttpEnvResponse, setContentType);
82 PHP_METHOD(HttpEnvResponse, setContentDisposition);
83 PHP_METHOD(HttpEnvResponse, setContentEncoding);
84 PHP_METHOD(HttpEnvResponse, setCacheControl);
85 PHP_METHOD(HttpEnvResponse, setLastModified);
86 PHP_METHOD(HttpEnvResponse, isCachedByLastModified);
87 PHP_METHOD(HttpEnvResponse, setEtag);
88 PHP_METHOD(HttpEnvResponse, isCachedByEtag);
89 PHP_METHOD(HttpEnvResponse, setThrottleRate);
90 PHP_METHOD(HttpEnvResponse, send);
91
92
93 PHP_MINIT_FUNCTION(http_env_response);
94
95 #endif
96
97 /*
98 * Local variables:
99 * tab-width: 4
100 * c-basic-offset: 4
101 * End:
102 * vim600: noet sw=4 ts=4 fdm=marker
103 * vim<600: noet sw=4 ts=4
104 */
105