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:

QProtobufJsonSerializer and QProtobufSerializer

Note: All functions in this class are reentrant.

Public Types

(since 6.8) enum class Error { None, InvalidHeader, UnknownType, UnexpectedEndOfStream, InvalidFormat }

Public Functions

virtual ~QAbstractProtobufSerializer()
bool deserialize(QProtobufMessage *message, QByteArrayView data) const
(since 6.8) virtual QAbstractProtobufSerializer::Error lastError() const = 0
(since 6.8) virtual QString lastErrorString() const = 0
QByteArray serialize(const QProtobufMessage *message) const

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 function qt_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

[since 6.8] enum class QAbstractProtobufSerializer::Error

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

ConstantValueDescription
QAbstractProtobufSerializer::Error::None0No error occurred.
QAbstractProtobufSerializer::Error::InvalidHeader1Something went wrong while attempting to decode a header in the message.
QAbstractProtobufSerializer::Error::UnknownType2While serializing or deserializing a message, no deserializer was found for a message field.
QAbstractProtobufSerializer::Error::UnexpectedEndOfStream3While deserializing a message, the stream ended unexpectedly.
QAbstractProtobufSerializer::Error::InvalidFormat4The data has invalid format. For example the JSON value doesn't match the field type.

This enum was introduced in Qt 6.8.

Member Function Documentation

[virtual noexcept] QAbstractProtobufSerializer::~QAbstractProtobufSerializer()

Destroys this QAbstractProtobufSerializer.

bool QAbstractProtobufSerializer::deserialize(QProtobufMessage *message, QByteArrayView data) const

Deserializes a registered Protobuf message message from a QByteArray data. message must not be nullptr. Returns true if deserialization was successful, otherwise false.

Unexpected/unknown properties in the data are skipped.

See also serialize().

[pure virtual, since 6.8] QAbstractProtobufSerializer::Error QAbstractProtobufSerializer::lastError() const

Returns the last error for the serializer instance.

This function was introduced in Qt 6.8.

See also lastErrorString().

[pure virtual, since 6.8] QString QAbstractProtobufSerializer::lastErrorString() const

Returns the last error string for the serializer instance.

This function was introduced in Qt 6.8.

See also lastError().

QByteArray QAbstractProtobufSerializer::serialize(const QProtobufMessage *message) const

Serializes a registered Protobuf message message into a QByteArray. message must not be nullptr.

See also deserialize().

Macro Documentation

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.

© 2024 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.