19 Iface_.reportStarted ();
21 Dumper_->setStandardOutputProcess (Restorer_);
24 &QProcess::errorOccurred,
26 [
this] { HandleProcessError (Dumper_); });
28 &QProcess::errorOccurred,
30 [
this] { HandleProcessError (Restorer_); });
34 [
this] { HandleProcessFinished (Dumper_); });
38 [
this] { HandleProcessFinished (Restorer_); });
47 return Iface_.future ();
52 const auto&
stderr = QString::fromUtf8 (
process->readAllStandardError ());
62 case QProcess::CrashExit:
68 auto errMsg =
tr (
"Dumping process crashed: %1.")
72 ReportResult (Error { std::move (
errMsg) });
75 case QProcess::NormalExit:
79 auto errMsg =
tr (
"Dumping process finished with error: %1 (%2).")
82 ReportResult (Error { std::move (
errMsg) });
84 else if (++FinishedCount_ == 2)
86 ReportResult (Finished {});
105 const auto&
errMsg =
process->error () == QProcess::FailedToStart ?
106 tr (
"Unable to start dumping process: %1. Do you have sqlite3 installed?") :
107 tr (
"Unable to dump the database: %1.");
108 ReportResult (Error {
errMsg.arg (
process->errorString ()) });
111 void Dumper::ReportResult (
const Result_t&
result)
113 Iface_.reportFinished (&
result);
QFuture< Result_t > GetFuture()
Dumper(const QString &from, const QString &to, QObject *=nullptr)
Container< T > Filter(const Container< T > &c, F f)