Commit | Line | Data |
---|---|---|
99a016b2 | 1 | /* $Id: sendq.h,v 1.7 2012/02/17 17:15:42 mmondor Exp $ */ |
ce436d0b MM |
2 | |
3 | /* | |
4 | * Copyright (c) 2008, Matthew Mondor | |
5 | * ALL RIGHTS RESERVED. | |
6 | */ | |
7 | ||
8 | #ifndef _SENDQ_H_ | |
9 | #define _SENDQ_H_ | |
10 | ||
11 | ||
12 | #include <stdbool.h> | |
13 | #include <stdint.h> | |
14 | ||
15 | #include <mmlist.h> | |
16 | #include <mmpool.h> | |
17 | ||
c20ad7db MM |
18 | #include "types.h" |
19 | ||
ce436d0b MM |
20 | |
21 | #define QITEM_HSIZE 512 | |
22 | #define QITEM_ISIZE 65536 | |
23 | #define QITEM_SIZE (QITEM_ISIZE + QITEM_HSIZE) | |
24 | ||
25 | ||
c20ad7db | 26 | struct qitem { |
ce436d0b MM |
27 | pnode_t node; |
28 | int refcnt; | |
29 | uint8_t *data; /* Start of actual QITEM_SIZE bytes buffer */ | |
30 | uint8_t *header1; /* Start of HTTP/1.0 200 ... response */ | |
31 | uint8_t *header2; /* Start of Content-length ... response */ | |
32 | uint8_t *image; /* Start of binary image data */ | |
33 | uint8_t *end; /* End of queued data */ | |
c20ad7db | 34 | }; |
ce436d0b | 35 | |
c20ad7db | 36 | struct qnode { |
0ab43060 | 37 | pnode_t node; |
ce436d0b MM |
38 | qitem_t *qitem; |
39 | uint8_t *ptr; | |
23ab503c | 40 | bool close; /* If we should close once item fully sent */ |
c20ad7db | 41 | }; |
ce436d0b MM |
42 | |
43 | ||
44 | extern bool sendq_init(void); | |
45 | extern qitem_t *qitem_new(void); | |
e583c3d8 | 46 | extern void qitem_destroy(qitem_t *); |
99a016b2 | 47 | extern void qitem_frame_init(qitem_t *, unsigned int, const char *); |
ce436d0b MM |
48 | extern qnode_t *qnode_new(qitem_t *, bool *); |
49 | extern void qnode_destroy(qnode_t *); | |
50 | extern int sendq_flush(int, list_t *); | |
51 | extern void sendq_purge(list_t *, bool); | |
23ab503c | 52 | extern bool sendq_page(list_t *, const char *, ...); |
ce436d0b MM |
53 | |
54 | ||
55 | #endif |