1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRPCCOMMONOPTIONS_P_H
5#define QTGRPCCOMMONOPTIONS_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtGrpc/qtgrpcglobal.h>
19#include <QtGrpc/qtgrpcnamespace.h>
20
21#include <QtCore/qbytearray.h>
22#include <QtCore/qhash.h>
23#include <QtCore/qshareddata.h>
24
25#include <chrono>
26#include <optional>
27
28QT_BEGIN_NAMESPACE
29
30class QGrpcCommonOptions : public QSharedData
31{
32public:
33 QGrpcCommonOptions() = default;
34 virtual ~QGrpcCommonOptions() = default;
35
36 [[nodiscard]] std::optional<std::chrono::milliseconds> deadlineTimeout() const noexcept;
37 void setDeadlineTimeout(std::chrono::milliseconds t);
38
39#if QT_DEPRECATED_SINCE(6, 13)
40 const QHash<QByteArray, QByteArray> &metadata() const & noexcept;
41 QHash<QByteArray, QByteArray> metadata() &&;
42 void setMetadata(const QHash<QByteArray, QByteArray> &md);
43 void setMetadata(QHash<QByteArray, QByteArray> &&md);
44#endif
45 const QMultiHash<QByteArray, QByteArray> &
46 metadata(QtGrpc::MultiValue_t /*tag*/) const & noexcept;
47 QMultiHash<QByteArray, QByteArray> metadata(QtGrpc::MultiValue_t /*tag*/) &&;
48 void setMetadata(const QMultiHash<QByteArray, QByteArray> &md);
49 void setMetadata(QMultiHash<QByteArray, QByteArray> &&md);
50 void addMetadata(QByteArray &&key, QByteArray &&value);
51 bool containsMetadata(QByteArrayView key, QByteArrayView value) const;
52
53 std::optional<bool> filterServerMetadata() const noexcept;
54 void setFilterServerMetadata(bool value);
55
56private:
57 std::optional<std::chrono::milliseconds> m_timeout;
58 QMultiHash<QByteArray, QByteArray> m_metadata;
59#if QT_DEPRECATED_SINCE(6, 13)
60 QHash<QByteArray, QByteArray> m_deprecatedMetadata;
61#endif
62 std::optional<bool> m_filterServerMetadata;
63};
64
65namespace QtGrpcPrivate {
66
67#if QT_DEPRECATED_SINCE(6, 13)
68QHash<QByteArray, QByteArray> toHash(const QMultiHash<QByteArray, QByteArray> &multiHash);
69#endif
70
71}
72
73QT_END_NAMESPACE
74
75#endif
76

source code of qtgrpc/src/grpc/qgrpccommonoptions_p.h