File indexing completed on 2024-05-05 05:48:56

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QByteArray>
0010 #include <QObject>
0011 #include <QString>
0012 
0013 #include "logFile.h"
0014 
0015 namespace KIO
0016 {
0017 class Job;
0018 class FileJob;
0019 }
0020 class KDirWatch;
0021 /**
0022  * TODO Inherits from LogFileReader
0023  */
0024 class KioLogFileReader : public QObject
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     explicit KioLogFileReader(const LogFile &logFile);
0030 
0031     ~KioLogFileReader() override;
0032 
0033     void open();
0034     void close();
0035 
0036 Q_SIGNALS:
0037     void lineRead(const QString &);
0038 
0039 private Q_SLOTS:
0040     void openDone(KIO::Job *job);
0041     void closeDone(KIO::Job *job);
0042     void dataReceived(KIO::Job *job, const QByteArray &data);
0043     void mimetypeReceived(KIO::Job *job, const QString &type);
0044 
0045     void watchFile(const QString &path);
0046 
0047 private:
0048     void emitCompleteLines();
0049     const LogFile mLogFile;
0050 
0051     KIO::FileJob *mFileJob = nullptr;
0052 
0053     QString mBuffer;
0054     qulonglong mTotalRead = 0;
0055 
0056     KDirWatch *const mFileWatch;
0057 };