don't duplicate QCoro's exception passing

This commit is contained in:
Jared Van Bortel 2025-02-27 14:56:14 -05:00
parent ea2ced8c8b
commit 068845e1a2
2 changed files with 11 additions and 30 deletions

View File

@ -10,7 +10,6 @@
#include <QUrl>
#include <cassert>
#include <exception>
#include <expected>
#include <utility>
#include <variant>
@ -22,15 +21,8 @@ namespace boost::json { class value; }
namespace gpt4all::backend {
struct ResponseError {
private:
using ErrorCode = std::variant<
QNetworkReply::NetworkError,
std::exception_ptr
>;
public:
ErrorCode error;
QString errorString;
QNetworkReply::NetworkError error;
QString errorString;
ResponseError(const QNetworkReply *reply)
: error(reply->error())
@ -38,13 +30,6 @@ public:
{
assert(reply->error());
}
ResponseError(const std::exception &e, std::exception_ptr err)
: error(std::move(err))
, errorString(e.what())
{
assert(std::get<std::exception_ptr>(error));
}
};
template <typename T>

View File

@ -27,20 +27,16 @@ static auto processResponse(QNetworkReply &reply) -> QCoro::Task<DataOrRespErr<j
if (reply.error())
co_return std::unexpected(&reply);
try {
json::parser p;
auto coroReply = qCoro(reply);
do {
auto chunk = co_await coroReply.readAll();
if (reply.error())
co_return std::unexpected(&reply);
p.write(chunk.data(), chunk.size());
} while (!reply.atEnd());
json::parser p;
auto coroReply = qCoro(reply);
do {
auto chunk = co_await coroReply.readAll();
if (reply.error())
co_return std::unexpected(&reply);
p.write(chunk.data(), chunk.size());
} while (!reply.atEnd());
co_return p.release();
} catch (const std::exception &e) {
co_return std::unexpected(ResponseError(e, std::current_exception()));
}
co_return p.release();
}