Patchwork [06/11] QMP: Array-based async messages

login
register
mail settings
Submitter Luiz Capitulino
Date Jan. 21, 2010, 9:09 p.m.
Message ID <1264108180-3666-7-git-send-email-lcapitulino@redhat.com>
Download mbox | patch
Permalink /patch/43455/
State New
Headers show

Comments

Luiz Capitulino - Jan. 21, 2010, 9:09 p.m.
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(-)

Patch

diff --git a/monitor.c b/monitor.c
index 70a59c7..61c0273 100644
--- a/monitor.c
+++ b/monitor.c
@@ -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);