src/server/safs/service.h

branch
aio
changeset 172
5580517faafc
parent 127
84e206063b64
child 184
a2a15ad6e4b9
equal deleted inserted replaced
170:711d00eeed25 172:5580517faafc
28 28
29 #ifndef SERVICE_H 29 #ifndef SERVICE_H
30 #define SERVICE_H 30 #define SERVICE_H
31 31
32 #include "../public/nsapi.h" 32 #include "../public/nsapi.h"
33 #include "../util/systems.h"
33 34
34 #ifdef __cplusplus 35 #ifdef __cplusplus
35 extern "C" { 36 extern "C" {
36 #endif 37 #endif
37 38
39 #define AIO_BUF_SIZE 16384
40
38 typedef struct HttpRange HttpRange; 41 typedef struct HttpRange HttpRange;
39 42
40 struct HttpRange { 43 struct HttpRange {
41 off_t begin; 44 off_t begin;
42 off_t end; 45 off_t end;
43 HttpRange *next; 46 HttpRange *next;
44 }; 47 };
45 48
49 typedef struct AsyncSendRange {
50 Session *sn;
51 Request *rq;
52 SYS_FILE in;
53 SYS_NETFD out;
54 off_t offset;
55 off_t length;
56 off_t pos;
57 char *header;
58 int headerlen;
59 size_t headerpos;
60 Event *readev;
61 Event *writeev;
62 aiocb_s *aio;
63 size_t wpos;
64 WSBool read_complete;
65 WSBool read_inprogress;
66 WSBool write_inprogress;
67 WSBool error;
68 } AsyncSendRange;
46 69
47 int send_file(pblock *pb, Session *sn, Request *rq); 70 int send_file(pblock *pb, Session *sn, Request *rq);
48 71
49 int service_hello(pblock *pb, Session *sn, Request *rq); 72 int service_hello(pblock *pb, Session *sn, Request *rq);
50 int service_ws_hello(pblock *pb, Session *sn, Request *rq); 73 int service_ws_hello(pblock *pb, Session *sn, Request *rq);

mercurial