in dubbo/codec/decoder.py [0:0]
def parse_response_head(response_head):
"""
对响应头部的字节做解析
:param response_head:
:return:
"""
# Magic number
if not (response_head[0] == 0xda and response_head[1] == 0xbb):
raise DubboException('illegal response')
# 第三位为1表示这是一个心跳包
if response_head[2] & 0x20 == 0x20:
if response_head[2] & 0x80 == 0x80:
# 第一位为1,一个心跳请求的包
heartbeat = 2
else:
# 第一位为0,一个心跳响应的包
heartbeat = 1
response_status = response_head[3]
if response_status != 20:
raise DubboException(response_status_message[response_status])
else:
heartbeat = 0
response_status = response_head[3]
if response_status != 20:
raise DubboResponseException(response_status_message[response_status])
return heartbeat, unpack('!i', response_head[12:])[0]