1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#include <QtGrpcQuick/qqmlgrpccalloptions.h>
5
6#include <QtGrpcQuick/private/qqmlgrpcmetadata_p.h>
7
8#include <QtCore/private/qobject_p.h>
9
10#include <chrono>
11
12using namespace std::chrono_literals;
13
14QT_BEGIN_NAMESPACE
15
16namespace QtGrpcQuickPrivate {
17
18class QQmlGrpcCallOptionsPrivate : public QObjectPrivate
19{
20public:
21 QGrpcCallOptions options;
22 QQmlGrpcMetadata *metadata = nullptr;
23 QMetaObject::Connection metadataUpdateConnection;
24};
25
26/*!
27 \class QQmlGrpcCallOptions
28 \internal
29*/
30
31QQmlGrpcCallOptions::QQmlGrpcCallOptions(QObject *parent)
32 : QObject(*(new QQmlGrpcCallOptionsPrivate), parent)
33{
34}
35
36QQmlGrpcCallOptions::~QQmlGrpcCallOptions() = default;
37
38qint64 QQmlGrpcCallOptions::deadlineTimeout() const
39{
40 Q_D(const QQmlGrpcCallOptions);
41 std::chrono::milliseconds ms = d->options.deadlineTimeout().value_or(u: 0ms);
42 return ms.count();
43}
44
45void QQmlGrpcCallOptions::setDeadlineTimeout(qint64 value)
46{
47 std::chrono::milliseconds ms(value);
48 Q_D(QQmlGrpcCallOptions);
49 d->options.setDeadlineTimeout(ms);
50 emit deadlineTimeoutChanged();
51}
52
53const QGrpcCallOptions &QQmlGrpcCallOptions::options() const & noexcept
54{
55 Q_D(const QQmlGrpcCallOptions);
56 return d->options;
57}
58
59QQmlGrpcMetadata *QQmlGrpcCallOptions::metadata() const
60{
61 Q_D(const QQmlGrpcCallOptions);
62 return d->metadata;
63}
64
65void QQmlGrpcCallOptions::setMetadata(QQmlGrpcMetadata *value)
66{
67 Q_D(QQmlGrpcCallOptions);
68 if (d->metadata != value) {
69 if (d->metadataUpdateConnection) {
70 disconnect(d->metadataUpdateConnection);
71 d->metadataUpdateConnection = {};
72 }
73
74 d->metadata = value;
75 if (d->metadata) {
76 const auto updateMetadata = [this]() {
77 Q_D(QQmlGrpcCallOptions);
78 d->options.setMetadata(d->metadata->metadata());
79 emit metadataChanged();
80 };
81 d->metadataUpdateConnection = connect(sender: d->metadata, signal: &QQmlGrpcMetadata::dataChanged, context: this,
82 slot: updateMetadata);
83 updateMetadata();
84 }
85 }
86}
87
88}
89
90QT_END_NAMESPACE
91
92#include "moc_qqmlgrpccalloptions.cpp"
93

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of qtgrpc/src/grpcquick/qqmlgrpccalloptions.cpp