File indexing completed on 2024-05-12 05:48:39
0001 /* 0002 SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com> 0003 SPDX-FileCopyrightText: 2015 Vyacheslav Matyushin 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "journaldAnalyzer.h" 0011 #include "journaldTypes.h" 0012 0013 using namespace JournaldTypes; 0014 0015 #include <QNetworkAccessManager> 0016 #include <QNetworkReply> 0017 0018 class JournaldNetworkAnalyzer : public JournaldAnalyzer 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 explicit JournaldNetworkAnalyzer(LogMode *mode, const JournaldAnalyzerOptions &options); 0024 0025 void watchLogFiles(bool enabled) override; 0026 0027 QStringList units() const override; 0028 0029 QStringList syslogIdentifiers() const override; 0030 0031 private Q_SLOTS: 0032 void httpFinished(); 0033 void httpReadyRead(); 0034 void httpError(QNetworkReply::NetworkError code); 0035 void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors); 0036 0037 private: 0038 enum class RequestType { SyslogIds, Units, EntriesFull, EntriesUpdate }; 0039 0040 void parseEntries(QByteArray &data, ReadingMode readingMode); 0041 void sendRequest(RequestType requestType); 0042 0043 void updateStatus(const QString &status); 0044 0045 RequestType mCurrentRequest; 0046 QString mBaseUrl; 0047 QString mEntriesUrlFull; 0048 QString mEntriesUrlUpdating; 0049 QString mSyslogIdUrl; 0050 QString mSystemdUnitsUrl; 0051 0052 QStringList mSyslogIdentifiers; 0053 QStringList mSystemdUnits; 0054 0055 QNetworkAccessManager mNetworkManager; 0056 QNetworkReply *mReply = nullptr; 0057 QString mCursor; 0058 JournalAddress mAddress; 0059 QString mFilterName; 0060 };