Revision 91b8eddf QMP/qmp.py
b/QMP/qmp.py | ||
---|---|---|
43 | 43 |
family = socket.AF_UNIX |
44 | 44 |
return socket.socket(family, socket.SOCK_STREAM) |
45 | 45 |
|
46 |
def __json_read(self): |
|
46 |
def __json_read(self, only_event=False):
|
|
47 | 47 |
while True: |
48 | 48 |
data = self.__sockfile.readline() |
49 | 49 |
if not data: |
... | ... | |
51 | 51 |
resp = json.loads(data) |
52 | 52 |
if 'event' in resp: |
53 | 53 |
self.__events.append(resp) |
54 |
continue |
|
54 |
if not only_event: |
|
55 |
continue |
|
55 | 56 |
return resp |
56 | 57 |
|
57 | 58 |
error = socket.error |
... | ... | |
106 | 107 |
qmp_cmd['id'] = id |
107 | 108 |
return self.cmd_obj(qmp_cmd) |
108 | 109 |
|
109 |
def get_events(self): |
|
110 |
def get_events(self, wait=False):
|
|
110 | 111 |
""" |
111 | 112 |
Get a list of available QMP events. |
113 |
|
|
114 |
@param wait: block until an event is available (bool) |
|
112 | 115 |
""" |
113 | 116 |
self.__sock.setblocking(0) |
114 | 117 |
try: |
... | ... | |
118 | 121 |
# No data available |
119 | 122 |
pass |
120 | 123 |
self.__sock.setblocking(1) |
124 |
if not self.__events and wait: |
|
125 |
self.__json_read(only_event=True) |
|
121 | 126 |
return self.__events |
122 | 127 |
|
123 | 128 |
def clear_events(self): |
Also available in: Unified diff