feat: add sink fail reason and correctly propagate it through the NetRequest

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2025-05-07 10:11:45 +03:00
parent a89fc7d1e0
commit c3749c4fdc
No known key found for this signature in database
GPG key ID: 55EF5DA53DB36318
7 changed files with 36 additions and 8 deletions

View file

@ -51,6 +51,7 @@ Task::State FileSink::init(QNetworkRequest& request)
// create a new save file and open it for writing
if (!FS::ensureFilePathExists(m_filename)) {
qCCritical(taskNetLogC) << "Could not create folder for " + m_filename;
m_fail_reason = "Could not create folder";
return Task::State::Failed;
}
@ -58,11 +59,13 @@ Task::State FileSink::init(QNetworkRequest& request)
m_output_file.reset(new PSaveFile(m_filename));
if (!m_output_file->open(QIODevice::WriteOnly)) {
qCCritical(taskNetLogC) << "Could not open " + m_filename + " for writing";
m_fail_reason = "Could not open file";
return Task::State::Failed;
}
if (initAllValidators(request))
return Task::State::Running;
m_fail_reason = "Failed to initialize validators";
return Task::State::Failed;
}
@ -73,6 +76,7 @@ Task::State FileSink::write(QByteArray& data)
m_output_file->cancelWriting();
m_output_file.reset();
m_wroteAnyData = false;
m_fail_reason = "Failed to write validators";
return Task::State::Failed;
}
@ -105,13 +109,16 @@ Task::State FileSink::finalize(QNetworkReply& reply)
if (gotFile || m_wroteAnyData) {
// ask validators for data consistency
// we only do this for actual downloads, not 'your data is still the same' cache hits
if (!finalizeAllValidators(reply))
if (!finalizeAllValidators(reply)) {
m_fail_reason = "Failed to finalize validators";
return Task::State::Failed;
}
// nothing went wrong...
if (!m_output_file->commit()) {
qCCritical(taskNetLogC) << "Failed to commit changes to " << m_filename;
m_output_file->cancelWriting();
m_fail_reason = "Failed to commit changes";
return Task::State::Failed;
}
}