3 #include "storage_number.h"
5 #ifndef NETDATA_WEB_BUFFER_H
6 #define NETDATA_WEB_BUFFER_H 1
8 #define WEB_DATA_LENGTH_INCREASE_STEP 16384
10 typedef struct web_buffer {
11 size_t size; // allocation size of buffer
12 size_t len; // current data length in buffer
13 char *buffer; // the buffer
16 time_t date; // the date this content has been generated
20 #define WB_CONTENT_CACHEABLE 1
21 #define WB_CONTENT_NO_CACHEABLE 2
24 #define CT_APPLICATION_JSON 1
25 #define CT_TEXT_PLAIN 2
26 #define CT_TEXT_HTML 3
27 #define CT_APPLICATION_X_JAVASCRIPT 4
30 #define CT_APPLICATION_XML 7
32 #define CT_APPLICATION_OCTET_STREAM 9
33 #define CT_APPLICATION_X_FONT_TRUETYPE 10
34 #define CT_APPLICATION_X_FONT_OPENTYPE 11
35 #define CT_APPLICATION_FONT_WOFF 12
36 #define CT_APPLICATION_FONT_WOFF2 13
37 #define CT_APPLICATION_VND_MS_FONTOBJ 14
38 #define CT_IMAGE_SVG_XML 15
40 #define buffer_strlen(wb) ((wb)->len)
41 extern const char *buffer_tostring(BUFFER *wb);
43 #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)
45 #define buffer_flush(wb) wb->buffer[wb->len = 0] = '\0'
46 extern void buffer_reset(BUFFER *wb);
48 extern void buffer_strcat(BUFFER *wb, const char *txt);
49 extern void buffer_rrd_value(BUFFER *wb, calculated_number value);
51 extern void buffer_date(BUFFER *wb, int year, int month, int day, int hours, int minutes, int seconds);
52 extern void buffer_jsdate(BUFFER *wb, int year, int month, int day, int hours, int minutes, int seconds);
54 extern BUFFER *buffer_create(long size);
55 extern void buffer_free(BUFFER *b);
56 extern void buffer_increase(BUFFER *b, size_t free_size_required);
58 extern void buffer_snprintf(BUFFER *wb, size_t len, const char *fmt, ...);
59 extern void buffer_vsprintf(BUFFER *wb, const char *fmt, va_list args);
60 extern void buffer_sprintf(BUFFER *wb, const char *fmt, ...);
62 extern void buffer_char_replace(BUFFER *wb, char from, char to);
64 #endif /* NETDATA_WEB_BUFFER_H */