def receive(msgpack_string, contract_digest=None):
"""Unpack a msgpack string into the appropriate Contract type.
If `contract_digest` is set, only returns the Response/Failure
if its digest matches the `contract_digest`, and returns False if it
doesn't.
"""
payload = msgpack.unpackb(msgpack_string)
if payload[0] == Contract.CONTRACT_REQUEST:
contract = Request.load(payload)
elif payload[0] == Contract.CONTRACT_RESPONSE:
contract = Response.load(payload)
elif payload[0] == Contract.CONTRACT_FAILURE:
contract = Failure.load(payload)
if contract_digest is not None and not isinstance(contract, Request):
if contract.request_digest == contract_digest:
return contract
else:
return False
return contract
评论列表
文章目录