]> arthur.barton.de Git - netdata.git/blob - src/web_buffer.h
Merge remote-tracking branch 'upstream/master' into health
[netdata.git] / src / web_buffer.h
1 #ifndef NETDATA_WEB_BUFFER_H
2 #define NETDATA_WEB_BUFFER_H 1
3
4 #define WEB_DATA_LENGTH_INCREASE_STEP 1024
5
6 typedef struct web_buffer {
7     size_t size;        // allocation size of buffer
8     size_t len;     // current data length in buffer
9     char *buffer;   // the buffer
10     uint8_t contenttype;
11     uint8_t options;
12     time_t date;    // the date this content has been generated
13 } BUFFER;
14
15 // options
16 #define WB_CONTENT_CACHEABLE            1
17 #define WB_CONTENT_NO_CACHEABLE         2
18
19 // content-types
20 #define CT_APPLICATION_JSON             1
21 #define CT_TEXT_PLAIN                   2
22 #define CT_TEXT_HTML                    3
23 #define CT_APPLICATION_X_JAVASCRIPT     4
24 #define CT_TEXT_CSS                     5
25 #define CT_TEXT_XML                     6
26 #define CT_APPLICATION_XML              7
27 #define CT_TEXT_XSL                     8
28 #define CT_APPLICATION_OCTET_STREAM     9
29 #define CT_APPLICATION_X_FONT_TRUETYPE  10
30 #define CT_APPLICATION_X_FONT_OPENTYPE  11
31 #define CT_APPLICATION_FONT_WOFF        12
32 #define CT_APPLICATION_FONT_WOFF2       13
33 #define CT_APPLICATION_VND_MS_FONTOBJ   14
34 #define CT_IMAGE_SVG_XML                15
35 #define CT_IMAGE_PNG                    16
36 #define CT_IMAGE_JPG                    17
37 #define CT_IMAGE_GIF                    18
38 #define CT_IMAGE_XICON                  19
39 #define CT_IMAGE_ICNS                   20
40 #define CT_IMAGE_BMP                    21
41
42 #define buffer_strlen(wb) ((wb)->len)
43 extern const char *buffer_tostring(BUFFER *wb);
44
45 #define buffer_need_bytes(buffer, needed_free_size) do { if(unlikely((buffer)->size - (buffer)->len < (size_t)(needed_free_size))) buffer_increase((buffer), (size_t)(needed_free_size)); } while(0)
46
47 #define buffer_flush(wb) wb->buffer[(wb)->len = 0] = '\0'
48 extern void buffer_reset(BUFFER *wb);
49
50 extern void buffer_strcat(BUFFER *wb, const char *txt);
51 extern void buffer_rrd_value(BUFFER *wb, calculated_number value);
52
53 extern void buffer_date(BUFFER *wb, int year, int month, int day, int hours, int minutes, int seconds);
54 extern void buffer_jsdate(BUFFER *wb, int year, int month, int day, int hours, int minutes, int seconds);
55
56 extern BUFFER *buffer_create(size_t size);
57 extern void buffer_free(BUFFER *b);
58 extern void buffer_increase(BUFFER *b, size_t free_size_required);
59
60 extern void buffer_snprintf(BUFFER *wb, size_t len, const char *fmt, ...) __attribute__ (( format (printf, 3, 4)));
61 extern void buffer_vsprintf(BUFFER *wb, const char *fmt, va_list args);
62 extern void buffer_sprintf(BUFFER *wb, const char *fmt, ...) __attribute__ (( format (printf, 2, 3)));
63
64 extern void buffer_char_replace(BUFFER *wb, char from, char to);
65
66 extern char *print_number_lu_r(char *str, unsigned long uvalue);
67 extern char *print_number_llu_r(char *str, unsigned long long uvalue);
68
69 extern void buffer_print_llu(BUFFER *wb, unsigned long long uvalue);
70
71 #endif /* NETDATA_WEB_BUFFER_H */