File indexing completed on 2024-06-02 05:24:49
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 iodevicelogger.h 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #pragma once 0011 0012 #include <QIODevice> 0013 0014 #include <utils/pimpl_ptr.h> 0015 0016 #include <memory> 0017 0018 namespace Kleo 0019 { 0020 0021 class IODeviceLogger : public QIODevice 0022 { 0023 Q_OBJECT 0024 public: 0025 explicit IODeviceLogger(const std::shared_ptr<QIODevice> &iod, QObject *parent = nullptr); 0026 ~IODeviceLogger() override; 0027 0028 void setWriteLogDevice(const std::shared_ptr<QIODevice> &dev); 0029 void setReadLogDevice(const std::shared_ptr<QIODevice> &dev); 0030 0031 bool atEnd() const override; 0032 qint64 bytesAvailable() const override; 0033 qint64 bytesToWrite() const override; 0034 bool canReadLine() const override; 0035 void close() override; 0036 bool isSequential() const override; 0037 bool open(OpenMode mode) override; 0038 qint64 pos() const override; 0039 bool reset() override; 0040 bool seek(qint64 pos) override; 0041 qint64 size() const override; 0042 bool waitForBytesWritten(int msecs) override; 0043 bool waitForReadyRead(int msecs) override; 0044 0045 protected: 0046 qint64 readData(char *data, qint64 maxSize) override; 0047 qint64 writeData(const char *data, qint64 maxSize) override; 0048 qint64 readLineData(char *data, qint64 maxSize) override; 0049 0050 private: 0051 class Private; 0052 kdtools::pimpl_ptr<Private> d; 0053 }; 0054 }