qemu/include/qapi/qmp/json-streamer.h
<<
>>
Prefs
   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 "qapi/qmp/json-lexer.h"
  18
  19typedef struct JSONToken {
  20    int type;
  21    int x;
  22    int y;
  23    char str[];
  24} JSONToken;
  25
  26typedef struct JSONMessageParser
  27{
  28    void (*emit)(struct JSONMessageParser *parser, GQueue *tokens);
  29    JSONLexer lexer;
  30    int brace_count;
  31    int bracket_count;
  32    GQueue *tokens;
  33    uint64_t token_size;
  34} JSONMessageParser;
  35
  36void json_message_parser_init(JSONMessageParser *parser,
  37                              void (*func)(JSONMessageParser *, GQueue *));
  38
  39int json_message_parser_feed(JSONMessageParser *parser,
  40                             const char *buffer, size_t size);
  41
  42int json_message_parser_flush(JSONMessageParser *parser);
  43
  44void json_message_parser_destroy(JSONMessageParser *parser);
  45
  46#endif
  47