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