Statistics
| Branch: | Revision:

root / json-streamer.h @ eca7db46

History | View | Annotate | Download (984 Bytes)

1
/*
2
 * JSON streaming support
3
 *
4
 * Copyright IBM, Corp. 2009
5
 *
6
 * Authors:
7
 *  Anthony Liguori   <aliguori@us.ibm.com>
8
 *
9
 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10
 * See the COPYING.LIB file in the top-level directory.
11
 *
12
 */
13

    
14
#ifndef QEMU_JSON_STREAMER_H
15
#define QEMU_JSON_STREAMER_H
16

    
17
#include "qlist.h"
18
#include "json-lexer.h"
19

    
20
typedef struct JSONMessageParser
21
{
22
    void (*emit)(struct JSONMessageParser *parser, QList *tokens);
23
    JSONLexer lexer;
24
    int brace_count;
25
    int bracket_count;
26
    QList *tokens;
27
    uint64_t token_size;
28
} JSONMessageParser;
29

    
30
void json_message_parser_init(JSONMessageParser *parser,
31
                              void (*func)(JSONMessageParser *, QList *));
32

    
33
int json_message_parser_feed(JSONMessageParser *parser,
34
                             const char *buffer, size_t size);
35

    
36
int json_message_parser_flush(JSONMessageParser *parser);
37

    
38
void json_message_parser_destroy(JSONMessageParser *parser);
39

    
40
#endif