network.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:mongodb-monitoring 作者: jruaux 项目源码 文件源码
def receive_message(
        sock, operation, request_id, max_message_size=MAX_MESSAGE_SIZE):
    """Receive a raw BSON message or raise socket.error."""
    header = _receive_data_on_socket(sock, 16)
    length = _UNPACK_INT(header[:4])[0]

    actual_op = _UNPACK_INT(header[12:])[0]
    assert operation == actual_op, ("wire protocol error: "
                                    "unknown opcode %r" % (actual_op,))
    # No request_id for exhaust cursor "getMore".
    if request_id is not None:
        response_id = _UNPACK_INT(header[8:12])[0]
        assert request_id == response_id, (
            "wire protocol error: got response id %r but expected %r"
            % (response_id, request_id))

    assert length > 16, ("wire protocol error: message length is shorter"
                         " than standard message header: %r" % (length,))

    assert length <= max_message_size, (
        "wire protocol error: message length (%r) is larger than server max "
        "message size (%r)" % (length, max_message_size))

    return _receive_data_on_socket(sock, length - 16)
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号