@@ -336,6 +336,38 @@ static void timestamp_put(QDict *qdict)
qdict_put_obj(qdict, "timestamp", obj);
}
+typedef struct MonitorEventName {
+ const char *name;
+} MonitorEventName;
+
+static const MonitorEventName monitor_events_names[] = {
+ [QEVENT_DEBUG] = {
+ .name = "DEBUG",
+ },
+ [QEVENT_SHUTDOWN] = {
+ .name = "SHUTDOWN",
+ },
+ [QEVENT_RESET] = {
+ .name = "RESET",
+ },
+ [QEVENT_POWERDOWN] = {
+ .name = "POWERDOWN",
+ },
+ [QEVENT_STOP] = {
+ .name = "STOP",
+ },
+ [QEVENT_VNC_CONNECTED] = {
+ .name = "VNC_CONNECTED",
+ },
+ [QEVENT_VNC_INITIALIZED] = {
+ .name = "VNC_INITIALIZED",
+ },
+ [QEVENT_VNC_DISCONNECTED] = {
+ .name = "VNC_DISCONNECTED",
+ },
+ { },
+};
+
/**
* monitor_protocol_event(): Generate a Monitor event
*
@@ -344,44 +376,13 @@ static void timestamp_put(QDict *qdict)
void monitor_protocol_event(MonitorEvent event, QObject *data)
{
QDict *qmp;
- const char *event_name;
Monitor *mon;
- assert(event < QEVENT_MAX);
-
- switch (event) {
- case QEVENT_DEBUG:
- event_name = "DEBUG";
- break;
- case QEVENT_SHUTDOWN:
- event_name = "SHUTDOWN";
- break;
- case QEVENT_RESET:
- event_name = "RESET";
- break;
- case QEVENT_POWERDOWN:
- event_name = "POWERDOWN";
- break;
- case QEVENT_STOP:
- event_name = "STOP";
- break;
- case QEVENT_VNC_CONNECTED:
- event_name = "VNC_CONNECTED";
- break;
- case QEVENT_VNC_INITIALIZED:
- event_name = "VNC_INITIALIZED";
- break;
- case QEVENT_VNC_DISCONNECTED:
- event_name = "VNC_DISCONNECTED";
- break;
- default:
- abort();
- break;
- }
+ assert(event >= 0 && event < QEVENT_MAX);
qmp = qdict_new();
timestamp_put(qmp);
- qdict_put(qmp, "event", qstring_from_str(event_name));
+ qdict_put(qmp, "event", qstring_from_str(monitor_events_names[event].name));
if (data) {
qobject_incref(data);
qdict_put_obj(qmp, "data", data);
This commit moves the asynchronous messages names to an array of structs, so that it can be indexed and searched. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> --- monitor.c | 67 +++++++++++++++++++++++++++++++------------------------------ 1 files changed, 34 insertions(+), 33 deletions(-)