Protobuf如何获取消息类型

时间:2019-03-02 19:33:45

标签: python protocol-buffers

Protobuf如何获取消息类型?

我为Protobuf编写了Serializer。我想知道如何获取消息类型。我正在使用

  

message_descriptor._concrete_class()

但是为此,我使用了私有过滤器_concrete_class,如果Google更改了此过滤器,我的序列化器将停止工作,我该如何重写没有私有过滤器的序列化器。

class ProtobufSerializer(AbstractSerializer):
def serialize(self, obj):
    if not isinstance(obj, Message):
        raise TypeError("obj must be of type Message")
    return obj.SerializeToString()

def deserialize(self, bytes_str, type_name):
    message_descriptor = Serialization().type_lookup[type_name]
    msg = message_descriptor._concrete_class()
    msg.ParseFromString(bytes_str)
    return msg

def get_type_name(self, obj):
    if not isinstance(obj, Message):
        raise TypeError("obj must be of type Message")
    return obj.DESCRIPTOR.full_name

0 个答案:

没有答案