Beispiel #1
0
def handle_packet(inst, mtype, pbuf_bytes, data_bytes):
    if mtype not in mtype_to_types:
        print("Unknown packet type {}!".format(debug.msg_type_str_local(mtype)))
        return chr(pb2.RESP_ERROR) + chr(pb2.ERR_UNKNOWN)

    pbuf_type, handler = mtype_to_types[mtype]
    pkt = pbuf_type()
    pkt.ParseFromString(pbuf_bytes)

    msg = handler(pkt, inst, data_bytes)
    if isinstance(msg, int):
        return pb2.RESP_ERROR, None, struct.pack('B', msg)
    return msg
Beispiel #2
0
def recv_packet(sock):
    header_bytes = recv_exact(sock, HEADER_SIZE)
    if len(header_bytes) == 0:
        return None
    header = struct.unpack(HEADER_FMT, header_bytes)

    print("{} (pbuflen {}, datalen {})".format(
        debug.msg_type_str_local(header[0]),
        header[1],
        header[2]))

    pbuf_bytes = recv_exact(sock, header[1])
    data_bytes = recv_exact(sock, header[2])

    return header[0], pbuf_bytes, data_bytes