summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2024-04-02 15:23:55 +0200
committerAlexey Edelev <alexey.edelev@qt.io>2024-04-10 10:38:42 +0200
commit535f9a309619547e71f10160a5b6d71c1f922f82 (patch)
treee15d0f8c96e6ab9d91de48ba2eb8a0e10346808c
parent4a7ea0c9d218293306a760ce92961cd6e5221a29 (diff)
Split the QGrpcStatus constructor
Use the explicit constructors instead of overloading with default arguments when constructing QGrpcStatus with and without the status message. Task-number: QTBUG-123625 Change-Id: I647474e5f3394f18746b8f57f6c0eafc3a9a97fa Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
-rw-r--r--src/grpc/qabstractgrpcclient.cpp10
-rw-r--r--src/grpc/qgrpchttp2channel.cpp31
-rw-r--r--src/grpc/qgrpcoperation.cpp11
-rw-r--r--src/grpc/qgrpcstatus.cpp9
-rw-r--r--src/grpc/qgrpcstatus.h3
5 files changed, 38 insertions, 26 deletions
diff --git a/src/grpc/qabstractgrpcclient.cpp b/src/grpc/qabstractgrpcclient.cpp
index fbf8860..f65432e 100644
--- a/src/grpc/qabstractgrpcclient.cpp
+++ b/src/grpc/qabstractgrpcclient.cpp
@@ -104,7 +104,7 @@ QGrpcStatus QAbstractGrpcClientPrivate::checkThread(QLatin1StringView warningPre
QGrpcStatus status;
if (q->thread() != QThread::currentThread()) {
- status = { QGrpcStatus::Unknown, threadSafetyWarning(warningPreamble) };
+ status = QGrpcStatus{ QGrpcStatus::Unknown, threadSafetyWarning(warningPreamble) };
qGrpcCritical() << status.message();
emit q->errorOccurred(status);
}
@@ -116,7 +116,7 @@ bool QAbstractGrpcClientPrivate::checkChannel()
Q_Q(QAbstractGrpcClient);
if (!channel) {
- emit q->errorOccurred({ QGrpcStatus::Unknown, "No channel(s) attached."_L1 });
+ emit q->errorOccurred(QGrpcStatus{ QGrpcStatus::Unknown, "No channel(s) attached."_L1 });
return false;
}
return true;
@@ -185,7 +185,7 @@ void QAbstractGrpcClient::attachChannel(const std::shared_ptr<QAbstractGrpcChann
if (channel->dPtr->threadId != QThread::currentThreadId()) {
const QString status = threadSafetyWarning("QAbstractGrpcClient::attachChannel"_L1);
qGrpcCritical() << status;
- emit errorOccurred({ QGrpcStatus::Unknown, status });
+ emit errorOccurred(QGrpcStatus{ QGrpcStatus::Unknown, status });
return;
}
Q_D(QAbstractGrpcClient);
@@ -302,8 +302,8 @@ std::optional<QByteArray> QAbstractGrpcClient::trySerialize(const QProtobufMessa
using namespace Qt::StringLiterals;
auto _serializer = d->serializer();
if (_serializer == nullptr) {
- Q_EMIT errorOccurred({ QGrpcStatus::Unknown,
- "Serializing failed. Serializer is not ready."_L1 });
+ Q_EMIT errorOccurred(QGrpcStatus{ QGrpcStatus::Unknown,
+ "Serializing failed. Serializer is not ready."_L1 });
return std::nullopt;
}
return _serializer->serialize(&arg);
diff --git a/src/grpc/qgrpchttp2channel.cpp b/src/grpc/qgrpchttp2channel.cpp
index 24afd70..2ccf7bd 100644
--- a/src/grpc/qgrpchttp2channel.cpp
+++ b/src/grpc/qgrpchttp2channel.cpp
@@ -195,10 +195,9 @@ private:
{
QObject::connect(socket, &T::errorOccurred, channelOperation,
[channelOperationPtr = QPointer(channelOperation)](auto error) {
- emit channelOperationPtr
- ->errorOccurred({ QGrpcStatus::StatusCode::Unavailable,
- QString("Network error occurred %1"_L1)
- .arg(error) });
+ emit channelOperationPtr->errorOccurred(QGrpcStatus{
+ QGrpcStatus::StatusCode::Unavailable,
+ QString("Network error occurred %1"_L1).arg(error) });
// The errorOccured signal can remove the last channelOperation holder,
// and in the same time the last finished signal listener, so we need
// to make sure that channelOperationPtr is still valid before
@@ -289,8 +288,10 @@ void QGrpcHttp2ChannelPrivate::Http2Handler::attachStream(QHttp2Stream *stream_)
channelOpInnerPtr->setServerMetadata(std::move(md));
- if (statusCode != QGrpcStatus::StatusCode::Ok)
- emit channelOpInnerPtr->errorOccurred({ statusCode, statusMessage });
+ if (statusCode != QGrpcStatus::StatusCode::Ok) {
+ emit channelOpInnerPtr->errorOccurred(QGrpcStatus{ statusCode,
+ statusMessage });
+ }
// The errorOccured signal can remove the last channelOperation holder,
// and in the same time the last finished signal listener, so we need
@@ -312,7 +313,7 @@ void QGrpcHttp2ChannelPrivate::Http2Handler::attachStream(QHttp2Stream *stream_)
if (!m_operation.expired()) {
auto channelOp = m_operation.lock();
- emit channelOp->errorOccurred({ code, errorString });
+ emit channelOp->errorOccurred(QGrpcStatus{ code, errorString });
}
}
parentChannel->deleteHandler(this);
@@ -620,8 +621,8 @@ void QGrpcHttp2ChannelPrivate::processOperation(std::shared_ptr<QGrpcChannelOper
if (!m_socket->isWritable()) {
channelOperationAsyncError(channelOperationPtr,
- { QGrpcStatus::StatusCode::Unavailable,
- m_socket->errorString() });
+ QGrpcStatus{ QGrpcStatus::StatusCode::Unavailable,
+ m_socket->errorString() });
return;
}
@@ -690,16 +691,16 @@ void QGrpcHttp2ChannelPrivate::sendRequest(Http2Handler *handler)
auto *channelOpPtr = handler->operation();
if (!m_connection) {
channelOperationAsyncError(channelOpPtr,
- { QGrpcStatus::Unavailable,
- "Unable to establish a HTTP/2 connection"_L1 });
+ QGrpcStatus{ QGrpcStatus::Unavailable,
+ "Unable to establish a HTTP/2 connection"_L1 });
return;
}
const auto streamAttempt = m_connection->createStream();
if (!streamAttempt.ok()) {
channelOperationAsyncError(channelOpPtr,
- { QGrpcStatus::Unavailable,
- "Unable to create a HTTP/2 stream"_L1 });
+ QGrpcStatus{ QGrpcStatus::Unavailable,
+ "Unable to create a HTTP/2 stream"_L1 });
return;
}
handler->attachStream(streamAttempt.unwrap());
@@ -736,8 +737,8 @@ void QGrpcHttp2ChannelPrivate::sendRequest(Http2Handler *handler)
if (!handler->sendHeaders(requestHeaders)) {
channelOperationAsyncError(channelOpPtr,
- { QGrpcStatus::Unavailable,
- "Unable to create HTTP2 stream"_L1 });
+ QGrpcStatus{ QGrpcStatus::Unavailable,
+ "Unable to create HTTP2 stream"_L1 });
return;
}
handler->sendData(channelOpPtr->argument());
diff --git a/src/grpc/qgrpcoperation.cpp b/src/grpc/qgrpcoperation.cpp
index f12aa74..8978565 100644
--- a/src/grpc/qgrpcoperation.cpp
+++ b/src/grpc/qgrpcoperation.cpp
@@ -178,7 +178,8 @@ void QGrpcOperation::cancel()
{
d_func()->isFinished.storeRelaxed(true);
emit d_func()->channelOperation->cancelled();
- emit errorOccurred({ QGrpcStatus::Cancelled, "Operation is cancelled by client"_L1 });
+ emit errorOccurred(QGrpcStatus{ QGrpcStatus::Cancelled,
+ "Operation is cancelled by client"_L1 });
}
/*!
@@ -196,19 +197,19 @@ QGrpcStatus QGrpcOperation::deserializationError() const
switch (serializer()->deserializationError()) {
case QAbstractProtobufSerializer::InvalidHeaderError: {
const QLatin1StringView errStr("Response deserialization failed: invalid field found.");
- status = { QGrpcStatus::InvalidArgument, errStr };
+ status = QGrpcStatus{ QGrpcStatus::InvalidArgument, errStr };
qGrpcWarning() << errStr;
emit errorOccurred(status);
} break;
case QAbstractProtobufSerializer::NoDeserializerError: {
const QLatin1StringView errStr("No deserializer was found for a given type.");
- status = { QGrpcStatus::InvalidArgument, errStr };
+ status = QGrpcStatus{ QGrpcStatus::InvalidArgument, errStr };
qGrpcWarning() << errStr;
emit errorOccurred(status);
} break;
case QAbstractProtobufSerializer::UnexpectedEndOfStreamError: {
const QLatin1StringView errStr("Invalid size of received buffer.");
- status = { QGrpcStatus::OutOfRange, errStr };
+ status = QGrpcStatus{ QGrpcStatus::OutOfRange, errStr };
qGrpcWarning() << errStr;
emit errorOccurred(status);
} break;
@@ -216,7 +217,7 @@ QGrpcStatus QGrpcOperation::deserializationError() const
Q_FALLTHROUGH();
default:
const QLatin1StringView errStr("Deserializing failed, but no error was set.");
- status = { QGrpcStatus::InvalidArgument, errStr };
+ status = QGrpcStatus{ QGrpcStatus::InvalidArgument, errStr };
qGrpcWarning() << errStr;
emit errorOccurred(status);
}
diff --git a/src/grpc/qgrpcstatus.cpp b/src/grpc/qgrpcstatus.cpp
index 658c18e..6bcea0a 100644
--- a/src/grpc/qgrpcstatus.cpp
+++ b/src/grpc/qgrpcstatus.cpp
@@ -86,6 +86,8 @@ QT_BEGIN_NAMESPACE
class QGrpcStatusPrivate
{
public:
+ QGrpcStatusPrivate(QGrpcStatus::StatusCode code) : m_code(code) { }
+
QGrpcStatusPrivate(QGrpcStatus::StatusCode code, const QString &message)
: m_code(code), m_message(message)
{
@@ -98,6 +100,13 @@ public:
};
/*!
+ Creates an instance of QGrpcStatus with a status \a code only.
+*/
+QGrpcStatus::QGrpcStatus(StatusCode code) : dPtr(std::make_unique<QGrpcStatusPrivate>(code))
+{
+}
+
+/*!
Creates an instance of QGrpcStatus with a status \a code and a \a message.
*/
QGrpcStatus::QGrpcStatus(StatusCode code, const QString &message)
diff --git a/src/grpc/qgrpcstatus.h b/src/grpc/qgrpcstatus.h
index fdc158b..afb271e 100644
--- a/src/grpc/qgrpcstatus.h
+++ b/src/grpc/qgrpcstatus.h
@@ -45,7 +45,8 @@ public:
Q_ENUM(StatusCode)
- QGrpcStatus(StatusCode code = StatusCode::Ok, const QString &message = QString());
+ explicit QGrpcStatus(StatusCode code = StatusCode::Ok);
+ explicit QGrpcStatus(StatusCode code, const QString &message);
~QGrpcStatus();
QGrpcStatus(const QGrpcStatus &other);