File indexing completed on 2025-03-09 05:20:52

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2008-2009, 2011 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_ABSTRACTFILESYSTEMSYNCTOREMOTEJOB_HPP
0010 #define KASTEN_ABSTRACTFILESYSTEMSYNCTOREMOTEJOB_HPP
0011 
0012 // library
0013 #include "abstractsynctoremotejob.hpp"
0014 
0015 class QFile;
0016 
0017 namespace Kasten {
0018 
0019 class AbstractModelFileSystemSynchronizer;
0020 
0021 class AbstractFileSystemSyncToRemoteJobPrivate;
0022 
0023 class KASTENCORE_EXPORT AbstractFileSystemSyncToRemoteJob : public AbstractSyncToRemoteJob
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     explicit AbstractFileSystemSyncToRemoteJob(AbstractModelFileSystemSynchronizer* synchronizer);
0029 
0030     ~AbstractFileSystemSyncToRemoteJob() override;
0031 
0032 public: // KJob API
0033     void start() override;
0034 
0035 protected: // API to be implemented
0036     virtual void startWriteToFile() = 0;
0037 
0038 protected:
0039     AbstractModelFileSystemSynchronizer* synchronizer() const;
0040     QFile* file() const;
0041 
0042 protected:
0043     void completeWrite(bool success);
0044 
0045 private:
0046     Q_PRIVATE_SLOT(d_func(), void syncToRemote())
0047 
0048 private:
0049     Q_DECLARE_PRIVATE(AbstractFileSystemSyncToRemoteJob)
0050 };
0051 
0052 }
0053 
0054 #endif