diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2024-04-02 15:23:55 +0200 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2024-04-10 10:38:42 +0200 |
commit | 535f9a309619547e71f10160a5b6d71c1f922f82 (patch) | |
tree | e15d0f8c96e6ab9d91de48ba2eb8a0e10346808c | |
parent | 4a7ea0c9d218293306a760ce92961cd6e5221a29 (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.cpp | 10 | ||||
-rw-r--r-- | src/grpc/qgrpchttp2channel.cpp | 31 | ||||
-rw-r--r-- | src/grpc/qgrpcoperation.cpp | 11 | ||||
-rw-r--r-- | src/grpc/qgrpcstatus.cpp | 9 | ||||
-rw-r--r-- | src/grpc/qgrpcstatus.h | 3 |
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); |