[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1][ 18/23] qapi: add base declaration/types for QMP
From: |
Michael Roth |
Subject: |
[Qemu-devel] [PATCH v1][ 18/23] qapi: add base declaration/types for QMP |
Date: |
Tue, 17 May 2011 19:52:05 -0500 |
Signed-off-by: Michael Roth <address@hidden>
---
qapi/qmp-core.h | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 90 insertions(+), 0 deletions(-)
create mode 100644 qapi/qmp-core.h
diff --git a/qapi/qmp-core.h b/qapi/qmp-core.h
new file mode 100644
index 0000000..c4a20a8
--- /dev/null
+++ b/qapi/qmp-core.h
@@ -0,0 +1,90 @@
+#ifndef QMP_CORE_H
+#define QMP_CORE_H
+
+#include "monitor.h"
+#include "error_int.h"
+#include "qapi/qapi-types-core.h"
+
+struct QmpCommandState
+{
+ QmpState *state;
+ QObject *tag;
+};
+
+typedef struct DefaultQmpConnection
+{
+ QmpSignal *obj;
+ int handle;
+ QTAILQ_ENTRY(DefaultQmpConnection) node;
+} DefaultQmpConnection;
+
+typedef void (QmpCommandFunc)(QmpState *qmp__sess, QDict *, QObject **, Error
**);
+typedef void (QmpAsyncCommandFunc)(const QDict *, Error **, QmpCommandState *);
+typedef void (QmpProxyCommandFunc)(QDict *args, Error **errp, QmpCommandState
*s);
+typedef void (QmpProxyCompletionFunc)(QmpCommandState *s, QDict *ret, Error
**errp);
+
+typedef enum QmpCommandType
+{
+ QCT_NORMAL,
+ QCT_ASYNC,
+ QCT_PROXY,
+} QmpCommandType;
+
+typedef struct QmpCommand
+{
+ const char *name;
+ QmpCommandType type;
+ QmpCommandFunc *fn;
+ QmpAsyncCommandFunc *afn;
+ QmpProxyCommandFunc *pfn;
+ QTAILQ_ENTRY(QmpCommand) node;
+} QmpCommand;
+
+void qmp_register_command(const char *name, QmpCommandFunc *fn);
+void qmp_register_proxy_command(const char *name, QmpProxyCommandFunc *fn,
QmpProxyCompletionFunc *cb);
+QmpCommand *qmp_find_command(const char *name);
+void qmp_async_complete_command(QmpCommandState *cmd, QObject *retval, Error
*err);
+
+typedef void (SignalFunc)(void);
+
+typedef struct QmpSlot
+{
+ int handle;
+ SignalFunc *func;
+ void *opaque;
+ QTAILQ_ENTRY(QmpSlot) node;
+} QmpSlot;
+
+struct QmpSignal
+{
+ int max_handle;
+ int ref;
+ QTAILQ_HEAD(, QmpSlot) slots;
+};
+
+typedef struct QmpConnection
+{
+ QmpState *state;
+ const char *event_name;
+ QmpSignal *signal;
+ int handle;
+ int global_handle;
+ QTAILQ_ENTRY(QmpConnection) node;
+} QmpConnection;
+
+struct QmpState
+{
+ int (*add_connection)(QmpState *s, QmpConnection *conn);
+ void (*del_connection)(QmpState *s, int global_handle, Error **errp);
+ void (*event)(QmpState *s, QObject *data);
+ int (*get_fd)(QmpState *s);
+
+ QTAILQ_HEAD(, DefaultQmpConnection) default_connections;
+};
+
+
+QObject *qmp_dispatch(QmpState *state, QObject *request);
+void qmp_proxy_dispatch(const char *name, QDict *args, Error **errp,
QmpCommandState *s);
+
+#endif
+
--
1.7.0.4
- [Qemu-devel] [PATCH v1][ 13/23] qapi: add QMP input visiter, (continued)
- [Qemu-devel] [PATCH v1][ 13/23] qapi: add QMP input visiter, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 16/23] qapi: add command registration/lookup functions, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 14/23] qapi: add QMP output visiter, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 17/23] qapi: add QMP dispatch functions, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 19/23] qapi: test schema used for unit tests, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 20/23] qapi: add test-visiter, tests for gen. visiter code, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 21/23] qapi: Makefile changes to build test-visiter, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 18/23] qapi: add base declaration/types for QMP,
Michael Roth <=
- [Qemu-devel] [PATCH v1][ 22/23] qapi: add test-qmp-commands, tests for gen. marshalling/dispatch code, Michael Roth, 2011/05/17
- [Qemu-devel] [PATCH v1][ 23/23] qapi: Makefile changes to build test-qmp-commands, Michael Roth, 2011/05/17
- Re: [Qemu-devel] [PATCH v1 00/23] QAPI Infrastructure Round 1, Luiz Capitulino, 2011/05/18