in dubbo/connection/connections.py [0:0]
def _parse_response(self, invoke_id, body):
"""
对dubbo的响应数据进行解析
:param invoke_id:
:param body:
:return:
"""
# invoke_id为None则意味着这是心跳的数据体,无需处理
if invoke_id is None:
return
try:
res = Response(body)
flag = res.read_int()
if flag == 2: # 响应的值为NULL
self.results[invoke_id] = None
elif flag == 1: # 正常的响应值
result = res.read_next()
self.results[invoke_id] = result
elif flag == 0: # 异常的响应值
self.results[invoke_id] = self._parse_error(res)
else:
raise DubboResponseException("Unknown result flag, expect '0' '1' '2', get " + flag)
except Exception as e:
logger.exception(e)
self.results[invoke_id] = e
finally:
self.conn_events[invoke_id].set() # 唤醒请求线程
logger.debug('Event set, invoked_id={}'.format(invoke_id))