QAbstractProtobufSerializer Class

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

Header: #include <QAbstractProtobufSerializer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
Since: Qt 6.5
Inherited By:

QProtobufSerializer

Note: All functions in this class are reentrant.

Public Types

enum DeserializationError { NoError, InvalidHeaderError, NoDeserializerError, UnexpectedEndOfStreamError }

Public Functions

virtual ~QAbstractProtobufSerializer()
bool deserialize(T *object, QByteArrayView data) const
QByteArray serialize(const QProtobufMessage *message) const

Protected Functions

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

Macros

Detailed Description

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.

Member Type Documentation

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.

ConstantValueDescription
QAbstractProtobufSerializer::NoError0No error occurred.
QAbstractProtobufSerializer::InvalidHeaderError1Something went wrong while attempting to decode a header in the message.
QAbstractProtobufSerializer::NoDeserializerError2While deserializing a message, no deserializer was found for a type in the message.
QAbstractProtobufSerializer::UnexpectedEndOfStreamError3While deserializing a message, the stream ended unexpectedly.

Member Function Documentation

[virtual] QAbstractProtobufSerializer::~QAbstractProtobufSerializer()

Destroys this QAbstractProtobufSerializer.

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

This function deserializes a registered Protobuf message object from a QByteArray data. object must not be nullptr. Returns 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.

See also 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 from a QByteArrayView data. message can be assumed to not be nullptr. Returns 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 into a QByteArray. message must not be 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.

See also 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 must not be nullptr. Returns a QByteArray containing the serialized message.

Macro Documentation

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.

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.