64 lines
2.3 KiB
C++
64 lines
2.3 KiB
C++
/*! \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
|