diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-03-01 17:54:22 +0200 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-04-21 17:24:31 +0300 |
commit | d14b1b34bafc7cc82383e8032f3adb626747849b (patch) | |
tree | 9e6568c3bc3f2eab072055c711264677dbe869cd /src/libs/installer/errors.h | |
parent | bda347d641ba6fdbec5f201bb89e1a8ac88b4c5b (diff) |
Add support for parallel extraction of component archives
Introduce ConcurrentOperationRunner class used for running
installer operations concurrently in the global thread pool.
Add execution groups for operations; Unpack operations are run
concurrently for all components requesting installation,
operations belonging to Install group are run sequentially for
sorted components one at a time as before. From the default
registered operations the Extract op is moved to Unpack group.
Move the previously on-the-fly backup steps of Extract operation
to the ExtractArchiveOperation::backup(), so that backups are
done before any archives are extracted, and that we know if any
of the archives requires administrator privileges to unpack.
Reparent QInstaller::Error to QException to support throwing
and catching exceptions across thread boundaries.
Use RAII for the server-side objects of the classes supporting
the remote client-server protocol of installer framework. The
concurrent extraction revealed that it was still possible that
the local socket was disconnected and thus the RemoteServer-
Connection thread finished before receiving and processing the
final "Destroy" command packet, leaking the dynamically
allocated objects.
Task-number: QTIFW-2566
Change-Id: Ib8c2928b9405b7b3465c731018df73acb51e949f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer/errors.h')
-rw-r--r-- | src/libs/installer/errors.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/libs/installer/errors.h b/src/libs/installer/errors.h index 117eb5119..e8f2ee914 100644 --- a/src/libs/installer/errors.h +++ b/src/libs/installer/errors.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -31,23 +31,21 @@ #include <QtCore/QDebug> #include <QtCore/QString> - -#include <stdexcept> +#include <QtCore/QException> namespace QInstaller { -class Error : public std::exception +class Error : public QException { public: - Error() - {} + Error() = default; explicit Error(const QString &message) : m_message(message) {} - virtual ~Error() throw() - {} + void raise() const override { throw *this; } + Error *clone() const override { return new Error(*this); } QString message() const { return m_message; } |