On 04/11/13 15:00, Eric Blake wrote:
On 04/11/2013 06:45 AM, Peter Krempa wrote:
Instead of always using HMP use the QMP send-key command introduced in qemu 1.3.
---

+++ b/src/qemu/qemu_monitor.c
@@ -3008,14 +3008,15 @@ int qemuMonitorInjectNMI(qemuMonitorPtr mon)
  int qemuMonitorSendKey(qemuMonitorPtr mon,
                         unsigned int holdtime,
                         unsigned int *keycodes,
-                       unsigned int nkeycodes)
+                       unsigned int nkeycodes,
+                       bool useQMP)
  {
      int ret;

      VIR_DEBUG("mon=%p, holdtime=%u, nkeycodes=%u",
                mon, holdtime, nkeycodes);

-    if (mon->json)
+    if (mon->json && useQMP)
          ret = qemuMonitorJSONSendKey(mon, holdtime, keycodes, nkeycodes);
      else
          ret = qemuMonitorTextSendKey(mon, holdtime, keycodes, nkeycodes);

I'm not sure I like adding the useQMP parameter.  That makes for a leaky
abstraction (the caller is burdened with telling us which version of a
polymorphic function to dispatch to).  What we have done in other cases
is to always dispatch to the json code, and then have the json code
_try_ the command, and if the command fails, fall back to the hmp

I saw that approach and I didn't like it thus I created this.

command.  See for example qemuMonitorJSONInjectNMI.  And if you do it
that way, you don't even need a qemu_capabilities bit, and the caller no
longer has to care about which version of monitor it is talking to.

Peter

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to