#ifndef IOMULIPLEXER_H #define IOMULIPLEXER_H #include #include #include #include class VirutalIODevice: public QBuffer { Q_OBJECT public: VirutalIODevice(QObject* parent = nullptr); virtual ~VirutalIODevice() override {} virtual qint64 writeData(const char *data, qint64 len) override; qint64 masterWrite(const QByteArray &byteArray); qint64 masterWrite(const char *data, qint64 maxSize); signals: void masterReadyRead(); }; class IoMuliplexer: public QObject { Q_OBJECT private: QIODevice* mainDevice_; std::vector< VirutalIODevice* > ioDevices_; public: explicit IoMuliplexer(QIODevice* mainDevice, QObject* Parent = nullptr); explicit IoMuliplexer(QObject* Parent = nullptr); ~IoMuliplexer(); void setIoDevice(QIODevice* mainDevice); QIODevice* getIoDevice(); private slots: void mainIsReadyRead(); void clientIsReadyRead(); }; #endif // IOMULIPLEXER_H