1// Copyright (C) 2022 The Qt Company Ltd.
2// Copyright (C) 2019 Alexey Edelev <semlanik@gmail.com>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QABSTRACTPROTOBUFSERIALIZER_H
6#define QABSTRACTPROTOBUFSERIALIZER_H
7
8#include <QtProtobuf/qtprotobufexports.h>
9#include <QtProtobuf/qtprotobuftypes.h>
10
11#include <QtCore/qbytearray.h>
12#include <QtCore/qbytearrayview.h>
13#include <QtCore/qstring.h>
14
15QT_BEGIN_NAMESPACE
16
17class QProtobufMessage;
18
19class Q_PROTOBUF_EXPORT QAbstractProtobufSerializer
20{
21public:
22 enum class Error : uint8_t {
23 None,
24 InvalidHeader,
25 UnknownType,
26 UnexpectedEndOfStream,
27 InvalidFormat,
28 };
29
30 QByteArray serialize(const QProtobufMessage *message) const;
31 bool deserialize(QProtobufMessage *message, QByteArrayView data) const;
32
33 virtual ~QAbstractProtobufSerializer();
34
35 virtual Error lastError() const = 0;
36 virtual QString lastErrorString() const = 0;
37
38private:
39 virtual QByteArray serializeMessage(const QProtobufMessage *message) const = 0;
40 virtual bool deserializeMessage(QProtobufMessage *message, QByteArrayView data) const = 0;
41};
42
43QT_END_NAMESPACE
44#endif // QABSTRACTPROTOBUFSERIALIZER_H
45

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtgrpc/src/protobuf/qabstractprotobufserializer.h