QAbstractProtobufSerializer 类

QAbstractProtobufSerializer 类是一个表示序列化/反序列化基本功能的接口。更多...

头文件 #include <QAbstractProtobufSerializer>
CMakefind_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
Qt 6.5
继承自

QProtobufBaseSerializer

状态技术预览

注意:本类中所有函数均为 可重入

公共类型

枚举DeserializationError { NoError, InvalidHeaderError, NoDeserializerError, UnexpectedEndOfStreamError, InvalidFormatError }

公共函数

virtual~QAbstractProtobufSerializer()
booldeserialize(T *object, QByteArrayView data) const
QByteArrayserialize(const QProtobufMessage *message) const

受保护函数

virtual booldeserializeMessage(QProtobufMessage *message, const QtProtobufPrivate::QProtobufPropertyOrdering &ordering, QByteArrayView data) const = 0
virtual QByteArrayserializeMessage(const QProtobufMessage *message, const QtProtobufPrivate::QProtobufPropertyOrdering &ordering) const = 0

详细描述

QProtobufSerializer 类为实现了 protobuf 消息的类注册序列化/反序列化器,继承自 QProtobufMessage。这些类是根据 .proto 文件自动生成的,使用 CMake 函数 qt_add_protobuf 或直接运行 qtprotobufgen

此类应作为特定序列化器的基类。处理器属性包含所有消息特定序列化器,应在序列化/反序列化时使用。继承类应重新实现由注册的消息序列化/反序列化函数使用的虚拟方法的作用域。

成员类型文档

enum QAbstractProtobufSerializer::DeserializationError

此枚举包含在反序列化过程中可能发生的可能错误。当发生错误时,请调用 deserializationErrorString() 获取可读的错误消息。

常量描述
QAbstractProtobufSerializer::NoError0未发生错误。
QAbstractProtobufSerializer::InvalidHeaderError1在尝试解码消息头时出现错误。
QAbstractProtobufSerializer::NoDeserializerError2在反序列化消息时,没有找到消息中某个类型的反序列化器。
QAbstractProtobufSerializer::UnexpectedEndOfStreamError3在反序列化消息时,流意外结束。
QAbstractProtobufSerializer::InvalidFormatError4数据格式无效。例如,JSON值与字段类型不匹配。

成员函数文档

[虚函数 noexcept] QAbstractProtobufSerializer::~QAbstractProtobufSerializer()

销毁此 QAbstractProtobufSerializer

< template <typename T> bool QAbstractProtobufSerializer::deserialize(T *object, QByteArrayView data) const

此函数从QByteArray 数据反序列化已注册的 Protobuf 消息对象。《i translate="no">对象不能为 nullptr。如果反序列化成功,则返回 true,否则返回 false

对于特定的类型T,您应在一个实例上调用deserialize()函数,该函数会回调用此函数。

数据中的意外/未知属性将被跳过。

另请参阅serialize()。

[纯虚函数受保护] bool QAbstractProtobufSerializer::deserializeMessage(QProtobufMessage *message, const QtProtobufPrivate::QProtobufPropertyOrdering &ordering, QByteArrayView data) const

由 deserialize() 调用以从 qbytearrayview.html(QByteArrayView) 数据反序列化具有 ordering 的已注册 Protobuf 消息 message。《i translate="no">message可假定不为 nullptr。如果反序列化成功,则返回 true,否则返回 false

< template <typename T> QByteArray QAbstractProtobufSerializer::serialize(const QProtobufMessage *message) const

此函数将该注册 Protobuf 消息 staffers(message) 序列化到一个QByteArray。《i translate="no">信息不能为 nullptr

对于特定类型T,您应在一个实例上调用deserialize()函数,该函数会回调用此函数。

另请参阅deserialize()。

[纯虚函数受保护] QByteArray QAbstractProtobufSerializer::serializeMessage(const QProtobufMessage *message, const QtProtobufPrivate::QProtobufPropertyOrdering &ordering) const

由 serialize() 调用以将已注册 Protobuf 消息 message 血统和 orderings 序列化。《i translate="no">信息必须不为nullptr。返回包含序列化消息QByteArray的值。

宏文档

Q_DECLARE_PROTOBUF_SERIALIZERS(Type)

为继承自 QProtobufMessageType 定义序列化和反序列化函数。这是 qtprotobufgen 工具生成的代码的一部分。

Q_PROTOBUF_OBJECT

在继承自 QProtobufMessage 的类中声明 propertyOrdering 成员。这是 qtprotobufgen 工具生成的代码的一部分。

© 2024 Qt 公司有限公司。本文件中的文档贡献拥有各自所有者的版权。所提供的文档受 GNU 自由文档许可协议版本 1.3 的条款约束,由自由软件基金会发布。Qt 及相关标志是芬兰及/或其他国家 Qt 公司的商标。所有其他商标均为各自所有者所有。