in mssqlscripter/jsonrpc/jsonrpcclient.py [0:0]
def _listen_for_response(self):
"""
Listen for and store response, event or exception for main thread to access.
Exceptions:
ValueError
The stream was closed. Exit the thread immediately.
LookupError
No valid header with content-length was found.
EOFError
The stream may not contain any bytes yet, so retry.
"""
while not self.cancel:
try:
response = self.reader.read_response()
response_id_str = response.get(u'id')
if response_id_str:
response_id = int(response_id_str)
# we have a id, map it with a new queue if it doesn't
# exist.
if response_id not in self.response_map:
self.response_map[response_id] = Queue()
# Enqueue the response.
self.response_map[response_id].put(response)
else:
# Event was returned.
self.response_map[0].put(response)
except EOFError as error:
# Thread fails once we reach EOF.
self._record_exception(error, self.RESPONSE_THREAD_NAME)
break
except ValueError as error:
# Stream was closed.
self._record_exception(error, self.RESPONSE_THREAD_NAME)
break
except LookupError as error:
# Content-Length header was not found.
self._record_exception(error, self.RESPONSE_THREAD_NAME)
break
except Exception as error:
# Catch generic exceptions.
self.record_exception(error, self.RESPONSE_THREAD_NAME)
break