1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef SERVICE_H
30 #define SERVICE_H
31
32 #include "../public/nsapi.h"
33 #include "../util/systems.h"
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 #define AIO_BUF_SIZE 16384
40
41 typedef struct HttpRange HttpRange;
42
43 struct HttpRange {
44 off_t begin;
45 off_t end;
46 HttpRange *next;
47 };
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 end;
56
57 off_t pos;
58 char *header;
59 int headerlen;
60 size_t headerpos;
61 Event *readev;
62 Event *writeev;
63 aiocb_s *aio;
64 size_t wpos;
65 WSBool read_complete;
66 WSBool read_inprogress;
67 WSBool write_inprogress;
68 WSBool error;
69 } AsyncSendRange;
70
71 int send_file(pblock *pb, Session *sn, Request *rq);
72
73 int service_hello(pblock *pb, Session *sn, Request *rq);
74 int service_ws_hello(pblock *pb, Session *sn, Request *rq);
75
76 int service_index(pblock *pb, Session *sn, Request *rq);
77
78 int send_options(pblock *pb, Session *sn, Request *rq);
79
80 #ifdef __cplusplus
81 }
82 #endif
83
84 #endif
85
86