[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 23/23] QMP: Add support for buffer class to qmp p
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH v4 23/23] QMP: Add support for buffer class to qmp python helper |
Date: |
Wed, 16 Jun 2010 00:38:47 +0200 |
From: Jan Kiszka <address@hidden>
This demonstrates the conversion of QMP buffer objects and does some
minimalistic pretty-printing.
Signed-off-by: Jan Kiszka <address@hidden>
---
QMP/qmp.py | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/QMP/qmp.py b/QMP/qmp.py
index 4062f84..4650918 100644
--- a/QMP/qmp.py
+++ b/QMP/qmp.py
@@ -8,7 +8,7 @@
# This work is licensed under the terms of the GNU GPL, version 2. See
# the COPYING file in the top-level directory.
-import socket, json
+import socket, json, binascii
class QMPError(Exception):
pass
@@ -16,6 +16,18 @@ class QMPError(Exception):
class QMPConnectError(QMPError):
pass
+class QMPBuffer:
+ def __init__(self, data):
+ self.data = binascii.a2b_base64(data)
+
+ def __repr__(self):
+ str = ''
+ for i in range(0, len(self.data)):
+ if i > 0:
+ str += ' '
+ str += binascii.b2a_hex(self.data[i])
+ return str
+
class QEMUMonitorProtocol:
def connect(self):
self.sock.connect(self.filename)
@@ -61,10 +73,19 @@ class QEMUMonitorProtocol:
# the Server won't read our input
self.sock.send(json.dumps(cmd) + ' ')
+ def __json_obj_hook(self, dct):
+ if '__class__' in dct:
+ if dct['__class__'] == 'buffer':
+ return QMPBuffer(dct['data'])
+ else:
+ return
+ return dct
+
def __json_read(self):
try:
while True:
- line = json.loads(self.sockfile.readline())
+ line = json.loads(self.sockfile.readline(),
+ object_hook=self.__json_obj_hook)
if not 'event' in line:
return line
except ValueError:
--
1.6.0.2
- [Qemu-devel] [PATCH v4 16/23] monitor: Allow to exclude commands from QMP, (continued)
- [Qemu-devel] [PATCH v4 16/23] monitor: Allow to exclude commands from QMP, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 14/23] monitor: return length of printed string via monitor_[v]printf, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 17/23] Add base64 encoder/decoder, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 21/23] QMP: Teach basic capability negotiation to python example, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 12/23] monitor: Add completion for qdev paths, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 19/23] QMP: Add QBuffer, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 18/23] QMP: Reserve namespace for complex object classes, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 22/23] QMP: Fix python helper /wrt long return strings, Jan Kiszka, 2010/06/15
- [Qemu-devel] [PATCH v4 23/23] QMP: Add support for buffer class to qmp python helper,
Jan Kiszka <=
- [Qemu-devel] [PATCH v4 20/23] monitor: Add basic device state visualization, Jan Kiszka, 2010/06/15
- Re: [Qemu-devel] [PATCH v4 00/23] qdev path reworks & basic device state visualization, Markus Armbruster, 2010/06/23