Warning, file /system/kpmcore/src/util/externalcommandhelper.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 2017-2020 Andrius Štikonas <andrius@stikonas.eu>
0003     SPDX-FileCopyrightText: 2018 Huzaifa Faruqui <huzaifafaruqui@gmail.com>
0004     SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho <caiojcarvalho@gmail.com>
0005     SPDX-FileCopyrightText: 2019 Shubham Jangra <aryan100jangid@gmail.com>
0006     SPDX-FileCopyrightText: 2020 David Edmundson <kde@davidedmundson.co.uk>
0007 
0008     SPDX-License-Identifier: GPL-3.0-or-later
0009 */
0010 
0011 #ifndef KPMCORE_EXTERNALCOMMANDHELPER_H
0012 #define KPMCORE_EXTERNALCOMMANDHELPER_H
0013 
0014 #include <memory>
0015 #include <unordered_set>
0016 
0017 #include <QDBusContext>
0018 #include <QEventLoop>
0019 #include <QFile>
0020 #include <QProcess>
0021 #include <QString>
0022 
0023 class QDBusServiceWatcher;
0024 constexpr qint64 MiB = 1 << 20;
0025 
0026 class ExternalCommandHelper : public QObject, public QDBusContext
0027 {
0028     Q_OBJECT
0029     Q_CLASSINFO("D-Bus Interface", "org.kde.kpmcore.externalcommand")
0030 
0031 Q_SIGNALS:
0032     Q_SCRIPTABLE void progress(int);
0033     Q_SCRIPTABLE void report(QString);
0034 
0035 public:
0036     ExternalCommandHelper();
0037     bool readData(QFile& device, QByteArray& buffer, const qint64 offset, const qint64 size);
0038     bool writeData(QFile& device, const QByteArray& buffer, const qint64 offset);
0039 
0040 public Q_SLOTS:
0041     Q_SCRIPTABLE QVariantMap RunCommand(const QString& command, const QStringList& arguments, const QByteArray& input, const int processChannelMode);
0042     Q_SCRIPTABLE QVariantMap CopyFileData(const QString& sourceDevice, const qint64 sourceOffset, const qint64 sourceLength,
0043                                         const QString& targetDevice, const qint64 targetOffset, const qint64 blockSize);
0044     Q_SCRIPTABLE QByteArray ReadData(const QString& device, const qint64 offset, const qint64 length);
0045     Q_SCRIPTABLE bool WriteData(const QByteArray& buffer, const QString& targetDevice, const qint64 targetOffset);
0046     Q_SCRIPTABLE bool WriteFstab(const QByteArray& fstabContents);
0047 
0048 private:
0049     bool isCallerAuthorized();
0050 
0051     void onReadOutput();
0052     QDBusServiceWatcher *m_serviceWatcher = nullptr;
0053 };
0054 
0055 #endif