File indexing completed on 2024-04-21 04:57:27
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <kde@broulik.de> 0003 * SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #pragma once 0007 0008 #include <KIO/WorkerBase> 0009 0010 #include "afcclient.h" 0011 #include "afcfilereader.h" 0012 0013 #include <optional> 0014 0015 class AfcFile 0016 { 0017 public: 0018 AfcFile(const AfcClient::Ptr &client, const QString &path); 0019 AfcFile(AfcFile &&other) Q_DECL_NOEXCEPT; 0020 ~AfcFile(); 0021 0022 AfcClient::Ptr client() const; 0023 QString path() const; 0024 0025 KIO::WorkerResult open(QIODevice::OpenMode mode); 0026 KIO::WorkerResult seek(KIO::filesize_t offset); 0027 KIO::WorkerResult truncate(KIO::filesize_t length); 0028 KIO::WorkerResult write(const QByteArray &data, uint32_t &bytesWritten); 0029 KIO::WorkerResult close(); 0030 0031 AfcFileReader reader() const; 0032 0033 private: 0034 AfcClient::Ptr m_client; 0035 QString m_path; 0036 0037 std::optional<uint64_t> m_handle; 0038 0039 Q_DISABLE_COPY(AfcFile) 0040 };