src/server/proxy/httpclient.h

changeset 671
879005903b2b
parent 669
ccdc97fd8204
equal deleted inserted replaced
670:73987de73246 671:879005903b2b
37 #include <cx/mempool.h> 37 #include <cx/mempool.h>
38 38
39 #ifdef __cplusplus 39 #ifdef __cplusplus
40 extern "C" { 40 extern "C" {
41 #endif 41 #endif
42
43 #define HTTP_CLIENT_BUFFER_SIZE 4096
44
45 #define HTTP_CLIENT_CALLBACK_WOULD_BLOCK -1
46 #define HTTP_CLIENT_CALLBACK_ERROR -2
42 47
43 typedef struct HttpClient HttpClient; 48 typedef struct HttpClient HttpClient;
44 struct HttpClient { 49 struct HttpClient {
45 EventHandler *ev; 50 EventHandler *ev;
46 CxMempool *mp; 51 CxMempool *mp;
74 79
75 /* 80 /*
76 * Response body write function 81 * Response body write function
77 * 82 *
78 * int response_body_write(HttpClient *client, void *buf, size_t size, void *userdata) 83 * int response_body_write(HttpClient *client, void *buf, size_t size, void *userdata)
84 *
85 * Return: number of processed bytes,
86 * HTTP_CLIENT_CALLBACK_WOULD_BLOCK or HTTP_CLIENT_CALLBACK_ERROR.
79 */ 87 */
80 int (*response_body_write)(HttpClient *, void *, size_t, void *); 88 ssize_t (*response_body_write)(HttpClient *, void *, size_t, void *);
81 void *response_body_write_userdata; 89 void *response_body_write_userdata;
82 90
83 /* 91 /*
84 * Response finished callback 92 * Response finished callback
85 * 93 *
88 void (*response_finished)(HttpClient *, int, void *); 96 void (*response_finished)(HttpClient *, int, void *);
89 void *response_finished_userdata; 97 void *response_finished_userdata;
90 98
91 99
92 // internals 100 // internals
101 HttpParser *parser;
102 netbuf buffer;
93 103
94 char *req_buffer; 104 char *req_buffer;
95 size_t req_buffer_len; 105 size_t req_buffer_len;
106 size_t req_buffer_pos;
107
108 int error;
109 int header_complete;
96 110
97 Event readev; 111 Event readev;
98 Event writeev; 112 Event writeev;
99 }; 113 };
100 114

mercurial