Config.w32: link to libssl.lib & libcrypto.lib
[m6w6/ext-http] / src / 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-2014, 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 ZEND_RESULT_CODE (*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 ZEND_RESULT_CODE (*set_status)(php_http_env_response_t *r, long http_code);
23 ZEND_RESULT_CODE (*set_protocol_version)(php_http_env_response_t *r, php_http_version_t *v);
24 ZEND_RESULT_CODE (*set_header)(php_http_env_response_t *r, const char *fmt, ...);
25 ZEND_RESULT_CODE (*add_header)(php_http_env_response_t *r, const char *fmt, ...);
26 ZEND_RESULT_CODE (*del_header)(php_http_env_response_t *r, const char *header_str, size_t header_len);
27 ZEND_RESULT_CODE (*write)(php_http_env_response_t *r, const char *data_str, size_t data_len);
28 ZEND_RESULT_CODE (*flush)(php_http_env_response_t *r);
29 ZEND_RESULT_CODE (*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_cookie_list_t *cookies;
40 php_http_buffer_t *buffer;
41 zval options;
42
43 struct {
44 size_t chunk;
45 double delay;
46 } throttle;
47
48 struct {
49 php_http_range_status_t status;
50 HashTable values;
51 char boundary[32];
52 } range;
53
54 struct {
55 size_t length;
56 char *type;
57 char *encoding;
58
59 php_http_encoding_stream_t *encoder;
60 } content;
61
62 zend_bool done;
63 };
64
65 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);
66 PHP_HTTP_API ZEND_RESULT_CODE php_http_env_response_send(php_http_env_response_t *r);
67 PHP_HTTP_API void php_http_env_response_dtor(php_http_env_response_t *r);
68 PHP_HTTP_API void php_http_env_response_free(php_http_env_response_t **r);
69
70 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);
71 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);
72
73 PHP_HTTP_API zend_class_entry *php_http_get_env_response_class_entry();
74 PHP_MINIT_FUNCTION(http_env_response);
75
76 #endif
77
78 /*
79 * Local variables:
80 * tab-width: 4
81 * c-basic-offset: 4
82 * End:
83 * vim600: noet sw=4 ts=4 fdm=marker
84 * vim<600: noet sw=4 ts=4
85 */
86