File indexing completed on 2024-05-05 17:43:11
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Ivan Cukic <ivan.cukic (at) kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef PLASMAVAULT_KDED_ENGINE_BACKEND_P_H 0008 #define PLASMAVAULT_KDED_ENGINE_BACKEND_P_H 0009 0010 #include <QDir> 0011 #include <QList> 0012 #include <QString> 0013 #include <QStringList> 0014 0015 #include <memory> 0016 0017 #include "commandresult.h" 0018 #include "vault.h" 0019 0020 namespace PlasmaVault 0021 { 0022 class Backend 0023 { 0024 public: 0025 typedef std::shared_ptr<Backend> Ptr; 0026 0027 Backend(); 0028 virtual ~Backend(); 0029 0030 virtual bool isInitialized(const Device &device) const = 0; 0031 virtual bool isOpened(const MountPoint &mountPoint) const = 0; 0032 0033 virtual FutureResult<> initialize(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload) = 0; 0034 0035 virtual FutureResult<> import(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload) = 0; 0036 0037 virtual FutureResult<> open(const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload) = 0; 0038 0039 virtual FutureResult<> close(const Device &device, const MountPoint &mountPoint) = 0; 0040 0041 virtual FutureResult<> dismantle(const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload) = 0; 0042 0043 virtual FutureResult<> validateBackend() = 0; 0044 0045 virtual QString name() const = 0; 0046 0047 static QStringList availableBackends(); 0048 0049 static Ptr instance(const QString &backend); 0050 0051 QString formatMessageLine(const QString &command, const QPair<bool, QString> &result) const; 0052 0053 static inline bool directoryExists(const QString &path) 0054 { 0055 QDir dir(path); 0056 0057 if (!dir.exists()) 0058 return false; 0059 0060 return !dir.entryList(QDir::NoDotAndDotDot | QDir::AllEntries).isEmpty(); 0061 } 0062 }; 0063 0064 } // namespace PlasmaVault 0065 0066 #endif // include guard