[pve-devel] [PATCH 01/14] qmp_read_avail : reworks

Alexandre Derumier aderumier at odiso.com
Mon Jun 25 10:02:45 CEST 2012


qmp response could me more than 1 json.

we can have 1 json with event info, and 1 json with return infos.

We die if we receive an error message in response.

Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/QemuServer.pm |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 47c122e..def9da0 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -2702,8 +2702,20 @@ my $qmp_read_avail = sub {
     }
 
     die "qmp read timeout\n" if !scalar(@ready);
-    my $obj = from_json($res);
-    return $obj;
+   
+    my @jsons = split("\n", $res);
+    my $obj = {};
+    my $event = {};
+    my $return = {};
+    foreach my $json (@jsons) {
+	$obj = from_json($json);
+	$event = $obj->{event} if exists $obj->{event};
+	$return = $obj->{QMP} if exists $obj->{QMP};
+	$return = $obj->{"return"} if exists $obj->{"return"};
+	die $obj->{error}->{desc} if exists $obj->{error}->{desc} && $obj->{error}->{desc} !~ m/Connection can not be completed immediately/;
+    }
+
+    return ($return,$event);
 };
 
 sub __read_avail {
-- 
1.7.2.5




More information about the pve-devel mailing list