]>
Commit | Line | Data |
---|---|---|
43c20a43 MR |
1 | /* |
2 | * Core Definitions for QAPI/QMP Dispatch | |
3 | * | |
4 | * Copyright IBM, Corp. 2011 | |
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 | ||
121d0712 MA |
14 | #ifndef QAPI_QMP_DISPATCH_H |
15 | #define QAPI_QMP_DISPATCH_H | |
43c20a43 | 16 | |
452fcdbc | 17 | #include "qemu/queue.h" |
43c20a43 MR |
18 | |
19 | typedef void (QmpCommandFunc)(QDict *, QObject **, Error **); | |
20 | ||
d34b867d LC |
21 | typedef enum QmpCommandOptions |
22 | { | |
23 | QCO_NO_OPTIONS = 0x0, | |
24 | QCO_NO_SUCCESS_RESP = 0x1, | |
25 | } QmpCommandOptions; | |
26 | ||
43c20a43 MR |
27 | typedef struct QmpCommand |
28 | { | |
29 | const char *name; | |
43c20a43 | 30 | QmpCommandFunc *fn; |
d34b867d | 31 | QmpCommandOptions options; |
43c20a43 | 32 | QTAILQ_ENTRY(QmpCommand) node; |
abd6cf6d | 33 | bool enabled; |
43c20a43 MR |
34 | } QmpCommand; |
35 | ||
1527badb MA |
36 | typedef QTAILQ_HEAD(QmpCommandList, QmpCommand) QmpCommandList; |
37 | ||
38 | void qmp_register_command(QmpCommandList *cmds, const char *name, | |
39 | QmpCommandFunc *fn, QmpCommandOptions options); | |
40 | void qmp_unregister_command(QmpCommandList *cmds, const char *name); | |
41 | QmpCommand *qmp_find_command(QmpCommandList *cmds, const char *name); | |
42 | QObject *qmp_dispatch(QmpCommandList *cmds, QObject *request); | |
43 | void qmp_disable_command(QmpCommandList *cmds, const char *name); | |
44 | void qmp_enable_command(QmpCommandList *cmds, const char *name); | |
45 | ||
8dc4d915 MW |
46 | bool qmp_command_is_enabled(const QmpCommand *cmd); |
47 | const char *qmp_command_name(const QmpCommand *cmd); | |
0106dc4f | 48 | bool qmp_has_success_response(const QmpCommand *cmd); |
e940f543 | 49 | QObject *qmp_build_error_object(Error *err); |
1527badb | 50 | |
8dc4d915 | 51 | typedef void (*qmp_cmd_callback_fn)(QmpCommand *cmd, void *opaque); |
1527badb MA |
52 | |
53 | void qmp_for_each_command(QmpCommandList *cmds, qmp_cmd_callback_fn fn, | |
54 | void *opaque); | |
43c20a43 MR |
55 | |
56 | #endif |