// Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef QTGRPCCOMMONOPTIONS_P_H #define QTGRPCCOMMONOPTIONS_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class QGrpcCommonOptions : public QSharedData { public: QGrpcCommonOptions() = default; virtual ~QGrpcCommonOptions() = default; [[nodiscard]] std::optional deadlineTimeout() const noexcept; void setDeadlineTimeout(std::chrono::milliseconds t); #if QT_DEPRECATED_SINCE(6, 13) const QHash &metadata() const &; QHash metadata() &&; void setMetadata(const QHash &md); void setMetadata(QHash &&md); #endif const QMultiHash &metadata(QtGrpc::MultiValue_t /*tag*/) const &; QMultiHash metadata(QtGrpc::MultiValue_t /*tag*/) &&; void setMetadata(const QMultiHash &md); void setMetadata(QMultiHash &&md); void addMetadata(QByteArray &&key, QByteArray &&value); bool containsMetadata(QByteArrayView key, QByteArrayView value) const; private: std::optional m_timeout; QMultiHash m_metadataMulti; #if QT_DEPRECATED_SINCE(6, 13) mutable QHash m_metadata; mutable bool m_deprecatedQHashRefUsed = false; #endif }; inline bool operator==(const QMultiHash &multiHash, const QHash &hash) { if (hash.size() != multiHash.size()) return false; for (const auto &[k, v] : hash.asKeyValueRange()) { const auto [f, l] = multiHash.equal_range(k); if (f == l || std::next(f) != l || *f != v) return false; } return true; } inline bool operator!=(const QMultiHash &multiHash, const QHash &hash) { return !(multiHash == hash); } QT_END_NAMESPACE #endif