Files
pip/libs/main/io_devices/pitransparentdevice.h
2026-03-07 17:00:45 +03:00

64 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*! \file pitransparentdevice.h
* \ingroup IO
* \~\brief
* \~english Loopback-style transparent device
* \~russian Прозрачное устройство с loopback-поведением
*/
/*
PIP - Platform Independent Primitives
PIIODevice that pass write to read
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PITRANSPARENTDEVICE_H
#define PITRANSPARENTDEVICE_H
#include "piiodevice.h"
//! \ingroup IO
//! \~\brief
//! \~english %PIIODevice that returns written packets through \a read().
//! \~russian %PIIODevice, который возвращает записанные пакеты через \a read().
class PIP_EXPORT PITransparentDevice: public PIIODevice {
PIIODEVICE(PITransparentDevice, "tr");
public:
//! \~english Constructs an empty %PITransparentDevice.
//! \~russian Создает пустой %PITransparentDevice.
explicit PITransparentDevice();
//! \~english Destroys the transparent device.
//! \~russian Уничтожает прозрачное устройство.
virtual ~PITransparentDevice();
//! \~english Returns size of the next queued packet.
//! \~russian Возвращает размер следующего пакета в очереди.
ssize_t bytesAvailable() const override;
protected:
bool openDevice() override;
bool closeDevice() override;
ssize_t readDevice(void * read_to, ssize_t max_size) override;
ssize_t writeDevice(const void * data, ssize_t max_size) override;
DeviceInfoFlags deviceInfoFlags() const override { return PIIODevice::Reliable; }
mutable PIMutex que_mutex;
PIQueue<PIByteArray> que;
};
#endif // PITRANSPARENTDEVICE_H