QAbstractProtobufSerializer Class

The QAbstractProtobufSerializer class is interface that represents basic functions for serialization/deserialization. 更多...

头: #include <QAbstractProtobufSerializer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
Since: Qt 6.5
继承者:

QProtobufSerializer

Status: Technical Preview

注意: 此类的所有函数 可重入 .

公共类型

enum DeserializationError { NoError, InvalidHeaderError, NoDeserializerError, UnexpectedEndOfStreamError }

公共函数

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

Q_DECLARE_PROTOBUF_SERIALIZERS ( Type )
Q_PROTOBUF_OBJECT

详细描述

The QProtobufSerializer class registers serializers/deserializers for classes implementing a protobuf message, inheriting QProtobufMessage . These classes are generated automatically, based on a .proto file, using the cmake build macro qt6_add_protobuf or by running qtprotobufgen directly.

This class should be used as a base for specific serializers. The handlers property contains all message-specific serializers and should be used while serialization/deserialization. Inherited classes should reimplement scope of virtual methods that used by registered message serialization/deserialization functions.

成员类型文档编制

enum QAbstractProtobufSerializer:: DeserializationError

This enum contains possible errors that can occur during deserialization. When an error occurs, call deserializationErrorString() to get a human-readable error message.

常量 描述
QAbstractProtobufSerializer::NoError 0 没有出现错误。
QAbstractProtobufSerializer::InvalidHeaderError 1 Something went wrong while attempting to decode a header in the message.
QAbstractProtobufSerializer::NoDeserializerError 2 While deserializing a message, no deserializer was found for a type in the message.
QAbstractProtobufSerializer::UnexpectedEndOfStreamError 3 While deserializing a message, the stream ended unexpectedly.

成员函数文档编制

[virtual noexcept] QAbstractProtobufSerializer:: ~QAbstractProtobufSerializer ()

销毁此 QAbstractProtobufSerializer .

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

This function deserializes a registered Protobuf message object QByteArray data . object 不得为 nullptr 。返回 true if deserialization was successful, otherwise false .

For a given type, T , you should call the deserialize() function on an instance of that type, which in turn will call this function for you.

Unexpected/unknown properties in the data are skipped.

另请参阅 serialize ().

[pure virtual protected] bool QAbstractProtobufSerializer:: deserializeMessage ( QProtobufMessage * message , const QtProtobufPrivate::QProtobufPropertyOrdering & ordering , QByteArrayView data ) const

This is called by deserialize () to deserialize a registered Protobuf message message with ordering QByteArrayView data . message can be assumed to not be nullptr 。返回 true if deserialization was successful, otherwise false .

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

This function serializes a registered Protobuf message message QByteArray . message 不得为 nullptr .

For a given type, T , you should call the serialize() function on an instance of that type, which in turn will call this function for you.

另请参阅 deserialize ().

[pure virtual protected] QByteArray QAbstractProtobufSerializer:: serializeMessage (const QProtobufMessage * message , const QtProtobufPrivate::QProtobufPropertyOrdering & ordering ) const

This is called by serialize () to serialize a registered Protobuf message message with ordering . message 不得为 nullptr 。返回 QByteArray containing the serialized message.

宏文档编制

Q_DECLARE_PROTOBUF_SERIALIZERS ( Type )

Defines serialize and deserialize functions for a Type inheriting QProtobufMessage . This is used as part of the code generated by the qtprotobufgen tool.

Q_PROTOBUF_OBJECT

Declares the propertyOrdering member in a class inheriting QProtobufMessage . This is used as part of the code generated by the qtprotobufgen tool.