QAbstractProtobufSerializer 类
QAbstractProtobufSerializer 类是一个表示序列化/反序列化基本功能的接口。更多...
头文件 | #include <QAbstractProtobufSerializer> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Protobuf) target_link_libraries(mytarget PRIVATE Qt6::Protobuf) |
自 | Qt 6.5 |
继承自 | |
状态 | 技术预览 |
注意:本类中所有函数均为 可重入。
公共类型
枚举 | DeserializationError { NoError, InvalidHeaderError, NoDeserializerError, UnexpectedEndOfStreamError, InvalidFormatError } |
公共函数
virtual | ~QAbstractProtobufSerializer() |
bool | deserialize(T *object, QByteArrayView data) const |
QByteArray | serialize(const QProtobufMessage *message) const |
受保护函数
virtual bool | deserializeMessage(QProtobufMessage *message, const QtProtobufPrivate::QProtobufPropertyOrdering &ordering, QByteArrayView data) const = 0 |
virtual QByteArray | serializeMessage(const QProtobufMessage *message, const QtProtobufPrivate::QProtobufPropertyOrdering &ordering) const = 0 |
宏
详细描述
QProtobufSerializer 类为实现了 protobuf 消息的类注册序列化/反序列化器,继承自 QProtobufMessage。这些类是根据 .proto
文件自动生成的,使用 CMake 函数 qt_add_protobuf 或直接运行 qtprotobufgen。
此类应作为特定序列化器的基类。处理器属性包含所有消息特定序列化器,应在序列化/反序列化时使用。继承类应重新实现由注册的消息序列化/反序列化函数使用的虚拟方法的作用域。
成员类型文档
enum QAbstractProtobufSerializer::DeserializationError
此枚举包含在反序列化过程中可能发生的可能错误。当发生错误时,请调用 deserializationErrorString() 获取可读的错误消息。
常量 | 值 | 描述 |
---|---|---|
QAbstractProtobufSerializer::NoError | 0 | 未发生错误。 |
QAbstractProtobufSerializer::InvalidHeaderError | 1 | 在尝试解码消息头时出现错误。 |
QAbstractProtobufSerializer::NoDeserializerError | 2 | 在反序列化消息时,没有找到消息中某个类型的反序列化器。 |
QAbstractProtobufSerializer::UnexpectedEndOfStreamError | 3 | 在反序列化消息时,流意外结束。 |
QAbstractProtobufSerializer::InvalidFormatError | 4 | 数据格式无效。例如,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)
为继承自 QProtobufMessage 的 Type 定义序列化和反序列化函数。这是 qtprotobufgen 工具生成的代码的一部分。
Q_PROTOBUF_OBJECT
在继承自 QProtobufMessage 的类中声明 propertyOrdering 成员。这是 qtprotobufgen 工具生成的代码的一部分。
© 2024 Qt 公司有限公司。本文件中的文档贡献拥有各自所有者的版权。所提供的文档受 GNU 自由文档许可协议版本 1.3 的条款约束,由自由软件基金会发布。Qt 及相关标志是芬兰及/或其他国家 Qt 公司的商标。所有其他商标均为各自所有者所有。