merged AI doc, some new pages

This commit is contained in:
2026-03-12 14:46:57 +03:00
parent 07ae277f9e
commit ed13838237
206 changed files with 14088 additions and 5152 deletions

View File

@@ -1,9 +1,8 @@
/*! \file pistreampacker.h
* \ingroup IO-Utils
* \~\brief
* \~english Simple packet wrap aroud any PIIODevice
* \~russian Простая фрагментация пакетов, использует любой PIIODevice
*/
//! \~\file pistreampacker.h
//! \~\ingroup IO-Utils
//! \~\brief
//! \~english Packet framing helper for byte-stream devices
//! \~russian Вспомогательный класс пакетирования для потоковых устройств
/*
PIP - Platform Independent Primitives
Simple packet wrap aroud any PIIODevice
@@ -33,45 +32,72 @@
class PIIODevice;
//! \~\ingroup IO-Utils
//! \~\brief
//! \~english Configuration for %PIStreamPacker packet framing.
//! \~russian Конфигурация пакетирования для %PIStreamPacker.
class PIStreamPackerConfig: public PIEthUtilBase {
friend class PIStreamPacker;
public:
//! \~english Constructs configuration with default packet framing parameters.
//! \~russian Создает конфигурацию с параметрами пакетирования по умолчанию.
PIStreamPackerConfig() {
crypt_size = false;
crypt_size = false;
aggressive_optimization = true;
max_packet_size = 1400;
packet_sign = 0xAFBE;
}
//! Set maximum size of single packet
//! \~english Sets maximum size of one emitted frame chunk.
//! \~russian Устанавливает максимальный размер одного отправляемого фрагмента.
void setMaxPacketSize(int max_size) { max_packet_size = max_size; }
//! Returns maximum size of single packet, default 1400 bytes
//! \~english Returns maximum size of one emitted frame chunk.
//! \~russian Возвращает максимальный размер одного отправляемого фрагмента.
int maxPacketSize() const { return max_packet_size; }
//! Set packet sinature
//! \~english Sets packet signature used to detect frame boundaries.
//! \~russian Устанавливает сигнатуру пакета для поиска границ кадра.
void setPacketSign(ushort sign_) { packet_sign = sign_; }
//! Returns packet sinature, default 0xAFBE
//! \~english Returns packet signature.
//! \~russian Возвращает сигнатуру пакета.
ushort packetSign() const { return packet_sign; }
//! Set receive aggressive optimization. If yes then %PIStreamPacker doesn`t
//! check every byte in incoming stream but check only begin of each read()
//! result. Default is \b true.
//! \~english Enables faster resynchronization on invalid stream data.
//! \~russian Включает более быструю ресинхронизацию при неверных данных в потоке.
//! \~\details
//! \~english
//! When enabled, %PIStreamPacker drops the whole current read chunk after a
//! signature mismatch instead of scanning byte by byte.
//! \~russian
//! Когда режим включен, %PIStreamPacker отбрасывает весь текущий прочитанный
//! блок после несовпадения сигнатуры вместо побайтного поиска.
void setaAggressiveOptimization(bool yes) { aggressive_optimization = yes; }
//! Returns aggressive optimization
//! \~english Returns whether aggressive resynchronization is enabled.
//! \~russian Возвращает, включена ли агрессивная ресинхронизация.
bool aggressiveOptimization() const { return aggressive_optimization; }
//! \~english Returns whether packet size field is encrypted too.
//! \~russian Возвращает, шифруется ли также поле размера пакета.
bool cryptSizeEnabled() const { return crypt_size; }
//! \~english Enables or disables encryption of the packet size field.
//! \~russian Включает или выключает шифрование поля размера пакета.
void setCryptSizeEnabled(bool on) { crypt_size = on; }
//! Get configuration
//! \~english Returns configuration as a const self-reference.
//! \~russian Возвращает конфигурацию как константную ссылку на себя.
const PIStreamPackerConfig & configuration() const { return *this; }
//! \~english Returns configuration as a mutable self-reference.
//! \~russian Возвращает конфигурацию как изменяемую ссылку на себя.
PIStreamPackerConfig & configuration() { return *this; }
//! Apply configuration
//! \~english Replaces current framing configuration with "config".
//! \~russian Заменяет текущую конфигурацию пакетирования на "config".
void setConfiguration(const PIStreamPackerConfig & config) { *this = config; }
private:
@@ -81,44 +107,58 @@ private:
};
//! \~\ingroup IO-Utils
//! \~\brief
//! \~english Simple packet wrapper around any PIIODevice
//! \~russian Простая фрагментация пакетов, использует любой PIIODevice
//! \details
//! \~english Provides packet framing and deframing for data transmission over any PIIODevice implementation
//! \~russian Предоставляет фрагментацию и дефрагментацию пакетов для передачи данных через любую реализацию PIIODevice
class PIP_IO_UTILS_EXPORT PIStreamPacker
: public PIObject
, public PIStreamPackerConfig {
PIOBJECT(PIStreamPacker)
public:
//! Contructs packer and try to assign \"dev\"
//! \~english Constructs packer and optionally binds it to "dev".
//! \~russian Создает упаковщик и при необходимости привязывает его к "dev".
PIStreamPacker(PIIODevice * dev = nullptr);
//! Returns progress of current packet receive in bytes
//! \~english Returns number of payload bytes collected for current packet.
//! \~russian Возвращает число байтов полезной нагрузки, собранных для текущего пакета.
int receivePacketProgress() const { return packet.size_s(); }
//! \~english Clears buffered stream state and incomplete packet data.
//! \~russian Очищает буферизованное состояние потока и данные незавершенного пакета.
void clear();
//! Prepare data for send and raise \a sendRequest() events
//! \~english Fragments data and raises \a sendRequest() for each fragment
//! \~russian Фрагментирует данные и вызывает \a sendRequest() для каждого фрагмента
void send(const PIByteArray & data);
//! Receive data part. If packet is ready, raise \a packetReceiveEvent() event
//! and \a packetReceived() virtual method
//! \~english Feeds received bytes into the unpacker.
//! \~russian Передает полученные байты в распаковщик.
//! \~\details
//! \~english Calls \a packetReceived() and emits \a packetReceiveEvent() when a packet is complete.
//! \~russian Вызывает \a packetReceived() и генерирует \a packetReceiveEvent(), когда пакет собран полностью.
void received(const PIByteArray & data);
EVENT_HANDLER2(void, received, const uchar *, readed, ssize_t, size);
//! Connect \"dev\" \a PIIODevice::threadedReadEvent() event to \a received() handler
//! and \a sendRequest() event to \"dev\" \a PIIODevice::write() handler
//! \~english Binds "dev" read and write callbacks to this packer.
//! \~russian Связывает обратные вызовы чтения и записи устройства "dev" с этим упаковщиком.
//! \~\details
//! \~english Connects \a PIIODevice::threadedReadEvent() to \a received() and \a sendRequest() to \a PIIODevice::write().
//! \~russian Подключает \a PIIODevice::threadedReadEvent() к \a received(), а \a sendRequest() к \a PIIODevice::write().
void assignDevice(PIIODevice * dev);
EVENT1(packetReceiveEvent, PIByteArray &, data);
EVENT1(startPacketReceive, int, size);
EVENT0(endPacketReceive);
EVENT1(sendRequest, PIByteArray, data);
//! \handlers
//! \{
//! \fn void received(uchar * readed, int size)
//! \brief Handler to receive data. \a PIIODevice::threadedReadEvent()
//! can be connected to this handler
//! \fn void received(const uchar * readed, ssize_t size)
//! \~english Handler overload for raw byte buffers from \a PIIODevice::threadedReadEvent().
//! \~russian Перегрузка обработчика для сырых буферов байтов из \a PIIODevice::threadedReadEvent().
EVENT_HANDLER2(void, received, const uchar *, readed, ssize_t, size);
//! \}
@@ -126,23 +166,30 @@ public:
//! \{
//! \fn void packetReceiveEvent(PIByteArray data)
//! \brief Raise on packet successfully received
//! \~english Emitted when a complete packet is received.
//! \~russian Генерируется, когда пакет полностью принят.
EVENT1(packetReceiveEvent, PIByteArray &, data);
//! \fn void startPacketReceive(int size)
//! \brief Raise on start receive packet with overall size \"size\"
//! \~english Emitted when a new packet with payload size "size" starts.
//! \~russian Генерируется при начале приема нового пакета с размером полезной нагрузки "size".
EVENT1(startPacketReceive, int, size);
//! \fn void endPacketReceive()
//! \brief Raise on finish receive packet
//! \~english Emitted after the current packet has been fully received.
//! \~russian Генерируется после полного приема текущего пакета.
EVENT0(endPacketReceive);
//! \fn void sendRequest(PIByteArray data)
//! \brief Raise from \a send() function. This data should
//! be directly sended to your device. You can
//! connect this event to \a PIIODevice::write() handler
//! \~english Emitted by \a send() for every framed chunk ready to write to the device.
//! \~russian Генерируется методом \a send() для каждого готового к записи во устройство фрагмента.
EVENT1(sendRequest, PIByteArray, data);
//! \}
protected:
//! Packet successfully received, by default does nothing
//! \~english Called after a packet payload has been reconstructed.
//! \~russian Вызывается после восстановления полезной нагрузки пакета.
virtual void packetReceived(PIByteArray data) {}
private: