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_COMMAND_RESULT_H 0008 #define PLASMAVAULT_KDED_ENGINE_COMMAND_RESULT_H 0009 0010 #include <QFuture> 0011 0012 #include "asynqt/basic/all.h" 0013 #include "asynqt/utils/expected.h" 0014 0015 namespace PlasmaVault 0016 { 0017 class Error 0018 { 0019 public: 0020 enum Code { 0021 MountPointError, 0022 DeviceError, 0023 BackendError, 0024 CommandError, 0025 DeletionError, 0026 UnknownError, 0027 OperationCancelled, 0028 }; 0029 0030 Error(Code code = UnknownError, const QString &message = {}, const QString &out = {}, const QString &err = {}); 0031 0032 Code code() const; 0033 QString message() const; 0034 QString out() const; 0035 QString err() const; 0036 0037 private: 0038 Code m_code; 0039 QString m_message; 0040 QString m_out; 0041 QString m_err; 0042 }; 0043 0044 template<typename T = void> 0045 using Result = AsynQt::Expected<T, Error>; 0046 0047 template<typename T = void> 0048 using FutureResult = QFuture<Result<T>>; 0049 0050 inline FutureResult<> errorResult(Error::Code error, const QString &message, const QString &out = {}, const QString &err = {}) 0051 { 0052 qWarning() << message; 0053 return makeReadyFuture(Result<>::error(error, message, out, err)); 0054 } 0055 0056 } // namespace PlasmaVault 0057 0058 #endif // include guard