34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
#ifndef OLLIE_KIO_H
|
|
#define OLLIE_KIO_H
|
|
|
|
#include <KIO/WorkerBase>
|
|
#include "lib9pclient.h"
|
|
|
|
// KIO worker for ollie:// URLs.
|
|
// Maps ollie:///path directly to the Ollie 9P namespace.
|
|
class OllieWorker : public KIO::WorkerBase
|
|
{
|
|
public:
|
|
OllieWorker(const QByteArray &pool, const QByteArray &app);
|
|
~OllieWorker() override;
|
|
|
|
KIO::WorkerResult listDir(const QUrl &url) override;
|
|
KIO::WorkerResult stat(const QUrl &url) override;
|
|
KIO::WorkerResult get(const QUrl &url) override;
|
|
KIO::WorkerResult put(const QUrl &url, int permissions, KIO::JobFlags flags) override;
|
|
KIO::WorkerResult mkdir(const QUrl &url, int permissions) override;
|
|
KIO::WorkerResult del(const QUrl &url, bool isFile) override;
|
|
KIO::WorkerResult rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) override;
|
|
|
|
private:
|
|
bool ensureConnected();
|
|
QString ninepPath(const QUrl &url) const;
|
|
KIO::UDSEntry entryFromStat(const QString &path, const QString &name);
|
|
bool isDirectory(const QString &mode) const;
|
|
mode_t parseMode(const QString &mode) const;
|
|
|
|
Lib9pClient m_client;
|
|
};
|
|
|
|
#endif // OLLIE_KIO_H
|