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 };