QMP: add server mode to QEMUMonitorProtocol
commit37628f11c6b190ebb3082938868aadb23942ee3a
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Wed, 25 May 2011 18:48:01 +0000 (25 19:48 +0100)
committerLuiz Capitulino <lcapitulino@redhat.com>
Wed, 1 Jun 2011 14:43:18 +0000 (1 11:43 -0300)
tree6c97f37b0f3262d6c32d0074699ce2651399cc10
parent91b8eddf41fd62ecbc61cb901c40f50287126fac
QMP: add server mode to QEMUMonitorProtocol

QEMU supports socket chardevs that establish connections like a server
or a client.  The QEMUMonitorProtocol class only supports connecting as
a client.  It is not possible to connect race-free when launching QEMU
since trying to connect before QEMU has bound and is listening on the
socket results in failure.

Add the QEMUMonitorProtocol(server=True) argument to bind and listen on
the socket.  The QEMU process can then be launched and connects to the
already existing QMP socket without a race condition:

  qmp = qmp.QEMUMonitorProtocol(monitor_path, server=True)
  popen = subprocess.Popen(args)
  qmp.accept()

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
QMP/qmp.py