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 }