From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=59646 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OHjnm-0001Xt-70 for qemu-devel@nongnu.org; Thu, 27 May 2010 16:35:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OHjnk-0003RO-Tr for qemu-devel@nongnu.org; Thu, 27 May 2010 16:35:38 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44948) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OHjnk-0003RJ-LH for qemu-devel@nongnu.org; Thu, 27 May 2010 16:35:36 -0400 Date: Thu, 27 May 2010 17:35:24 -0300 From: Luiz Capitulino Message-ID: <20100527173524.7b1e5775@redhat.com> In-Reply-To: <834d0bba21d14e502c1f7274eb244ed3b682ae1d.1274612367.git.jan.kiszka@web.de> References: <834d0bba21d14e502c1f7274eb244ed3b682ae1d.1274612367.git.jan.kiszka@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH v3 16/17] QMP: Fix python helper /wrt long return strings List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Anthony Liguori , Juan Quintela , Markus@gnu.org, qemu-devel@nongnu.org, Armbruster , Blue Swirl , Avi Kivity , Jan Kiszka On Sun, 23 May 2010 12:59:29 +0200 Jan Kiszka wrote: > From: Jan Kiszka > > Remove the arbitrary limitation of 1024 characters per return string and > read complete lines instead. Required for device_show. Thanks for both fixes, I have started working on a better version of this script that mimics better the user monitor but it's only half done. > > Signed-off-by: Jan Kiszka > --- > QMP/qmp.py | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/QMP/qmp.py b/QMP/qmp.py > index d9da603..4062f84 100644 > --- a/QMP/qmp.py > +++ b/QMP/qmp.py > @@ -63,10 +63,14 @@ class QEMUMonitorProtocol: > > def __json_read(self): > try: > - return json.loads(self.sock.recv(1024)) > + while True: > + line = json.loads(self.sockfile.readline()) > + if not 'event' in line: > + return line > except ValueError: > return > > def __init__(self, filename): > self.filename = filename > self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) > + self.sockfile = self.sock.makefile()