src/server/safs/cgi.h

changeset 516
ec22d4ccd081
parent 502
11ac3761c0e3
child 517
be62c9604377
equal deleted inserted replaced
515:2c3fe06a9210 516:ec22d4ccd081
33 #include <cx/buffer.h> 33 #include <cx/buffer.h>
34 34
35 #ifdef __cplusplus 35 #ifdef __cplusplus
36 extern "C" { 36 extern "C" {
37 #endif 37 #endif
38
39 enum CgiIOResult {
40 CGI_IO_COMPLETE = 0,
41 CGI_IO_NEED_READ,
42 CGI_IO_NEED_WRITE,
43 CGI_IO_ERROR
44 };
38 45
46 typedef enum CgiIOResult CgiIOResult;
47
39 typedef struct { 48 typedef struct {
40 int in[2]; 49 int in[2];
41 int out[2]; 50 int out[2];
42 int err[2]; 51 int err[2];
43 pid_t pid; 52 pid_t pid;
60 69
61 /* 70 /*
62 * request path (rq->vars path) 71 * request path (rq->vars path)
63 */ 72 */
64 char *path; 73 char *path;
74
75 /*
76 * event object for pollin
77 * active by default and my be deactivated/reactivated in some cases
78 */
79 Event *readev;
65 80
66 /* 81 /*
67 * event object prepared for pollout 82 * event object prepared for pollout
68 * only activated if write returns EWOULDBLOCK 83 * only activated if write returns EWOULDBLOCK
69 */ 84 */
153 int cgi_stdout_readevent(EventHandler *ev, Event *event); 168 int cgi_stdout_readevent(EventHandler *ev, Event *event);
154 int cgi_stderr_readevent(EventHandler *ev, Event *event); 169 int cgi_stderr_readevent(EventHandler *ev, Event *event);
155 int cgi_event_finish(EventHandler *ev, Event *event); 170 int cgi_event_finish(EventHandler *ev, Event *event);
156 int cgi_writeevent(EventHandler *ev, Event *event); 171 int cgi_writeevent(EventHandler *ev, Event *event);
157 172
158 int cgi_read_output(CGIHandler *handler, EventHandler *ev); 173 CgiIOResult cgi_read_output(CGIHandler *handler, EventHandler *ev);
159 174
160 CGIResponseParser* cgi_parser_new(Session *sn, Request *rq); 175 CGIResponseParser* cgi_parser_new(Session *sn, Request *rq);
161 void cgi_parser_free(CGIResponseParser *parser); 176 void cgi_parser_free(CGIResponseParser *parser);
162 int cgi_parse_response(CGIResponseParser *parser, char *buf, size_t len, size_t *bpos); 177 int cgi_parse_response(CGIResponseParser *parser, char *buf, size_t len, size_t *bpos);
163 178

mercurial