json: make membuffer helper public

Make json_t to MemBuffer helper public so it can reused.
pull/1867/head
Victor Julien 11 years ago
parent acaf8a84e8
commit 40cf1f8ef7

@ -333,18 +333,13 @@ json_t *CreateJSONHeaderWithTxId(Packet *p, int direction_sensitive, char *event
return js; return js;
} }
/* helper struct for the callback */ int OutputJSONMemBufferCallback(const char *str, size_t size, void *data)
typedef struct MemBufferWrapper_ {
MemBuffer **buffer;
} MemBufferWrapper;
static int MemBufferCallback(const char *str, size_t size, void *data)
{ {
MemBufferWrapper *wrapper = data; OutputJSONMemBufferWrapper *wrapper = data;
MemBuffer **memb = wrapper->buffer; MemBuffer **memb = wrapper->buffer;
if (MEMBUFFER_OFFSET(*memb) + size >= MEMBUFFER_SIZE(*memb)) { if (MEMBUFFER_OFFSET(*memb) + size >= MEMBUFFER_SIZE(*memb)) {
MemBufferExpand(memb, OUTPUT_BUFFER_SIZE); MemBufferExpand(memb, wrapper->expand_by);
} }
MemBufferWriteRaw((*memb), str, size); MemBufferWriteRaw((*memb), str, size);
@ -362,9 +357,12 @@ int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer)
MemBufferWriteRaw((*buffer), file_ctx->prefix, file_ctx->prefix_len); MemBufferWriteRaw((*buffer), file_ctx->prefix, file_ctx->prefix_len);
} }
MemBufferWrapper wrapper = { .buffer = buffer }; OutputJSONMemBufferWrapper wrapper = {
.buffer = buffer,
.expand_by = OUTPUT_BUFFER_SIZE
};
int r = json_dump_callback(js, MemBufferCallback, &wrapper, int r = json_dump_callback(js, OutputJSONMemBufferCallback, &wrapper,
JSON_PRESERVE_ORDER|JSON_COMPACT|JSON_ENSURE_ASCII| JSON_PRESERVE_ORDER|JSON_COMPACT|JSON_ENSURE_ASCII|
#ifdef JSON_ESCAPE_SLASH #ifdef JSON_ESCAPE_SLASH
JSON_ESCAPE_SLASH JSON_ESCAPE_SLASH

@ -31,6 +31,13 @@
void TmModuleOutputJsonRegister (void); void TmModuleOutputJsonRegister (void);
#ifdef HAVE_LIBJANSSON #ifdef HAVE_LIBJANSSON
/* helper struct for OutputJSONMemBufferCallback */
typedef struct OutputJSONMemBufferWrapper_ {
MemBuffer **buffer; /**< buffer to use & expand as needed */
size_t expand_by; /**< expand by this size */
} OutputJSONMemBufferWrapper;
int OutputJSONMemBufferCallback(const char *str, size_t size, void *data);
void CreateJSONFlowId(json_t *js, const Flow *f); void CreateJSONFlowId(json_t *js, const Flow *f);
void JsonTcpFlags(uint8_t flags, json_t *js); void JsonTcpFlags(uint8_t flags, json_t *js);

Loading…
Cancel
Save