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:
parent
a89fc7d1e0
commit
c3749c4fdc
7 changed files with 36 additions and 8 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue