in mssqlscripter/jsonrpc/jsonrpcclient.py [0:0]
def read_response(self):
"""
Read JSON RPC message from buffer.
Exceptions raised:
ValueError
if the body-content can not be serialized to a JSON object.
"""
# Using a mutable list to hold the value since a immutable string
# passed by reference won't change the value.
content = ['']
try:
while (not self.needs_more_data or self.read_next_chunk()):
# We should have all the data we need to form a message in the buffer.
# If we need more data to form the next message, this flag will
# be reset by a attempt to form a header or content.
self.needs_more_data = False
# If we can't read a header, read the next chunk.
if self.read_state is ReadState.Header and not self.try_read_headers():
self.needs_more_data = True
continue
# If we read the header, try the content. If that fails, read
# the next chunk.
if self.read_state is ReadState.Content and not self.try_read_content(
content):
self.needs_more_data = True
continue
# We have the content
break
# Resize buffer and remove bytes we have read
self.trim_buffer_and_resize(self.read_offset)
return json.loads(content[0])
except ValueError as ex:
# response has invalid json object.
logger.debug(
u'JSON RPC Reader on read_response() encountered exception: {}'.format(ex))
raise