more ai generated doc with human review

This commit is contained in:
2026-02-28 12:29:00 +03:00
parent 077f12c9e5
commit 0878891cd8
86 changed files with 2215 additions and 637 deletions

View File

@@ -41,12 +41,15 @@ typedef std::function<bool(const uchar *, int)> PacketExtractorPayloadFunc;
/// Return true if packet is correct, false otherwise.
typedef std::function<bool(const uchar *, const uchar *, int)> PacketExtractorFooterFunc;
//! \~english Packets extractor
//! \~russian Извлекатель пакетов
class PIP_EXPORT PIPacketExtractor: public PIIODevice {
PIIODEVICE(PIPacketExtractor, "pckext");
friend class PIConnection;
public:
//! Extract algorithms
//! \~english Extract algorithms
//! \~russian Алгоритмы извлечения
enum SplitMode {
None /** No data processing */,
Header /** Detect packets with \a header() and following \a payloadSize() */,
@@ -56,64 +59,91 @@ public:
Timeout /** Wait for first read, then read for \a timeout() */
};
//! Contructs extractor with child device "device_" and extract algorithm "mode"
//! \~english Constructs extractor with child device "device_" and extract algorithm "mode"
//! \~russian Создает экстрактор с дочерним устройством "device_" и алгоритмом извлечения "mode"
explicit PIPacketExtractor(PIIODevice * device_ = nullptr, SplitMode mode = None);
//! \~english Destructor
//! \~russian Деструктор
virtual ~PIPacketExtractor() { stop(); }
//! Returns child %device
//! \~english Returns child %device
//! \~russian Возвращает дочернее устройство
PIIODevice * device() { return dev; }
//! Set child %device to "device_"
//! \~english Set child %device to "device_"
//! \~russian Установить дочернее устройство в "device_"
void setDevice(PIIODevice * device_);
//! \~english Get bytes available
//! \~russian Получить доступные байты
ssize_t bytesAvailable() const override;
//! \~english Set header check function
//! \~russian Установить функцию проверки заголовка
void setHeaderCheckSlot(PacketExtractorHeaderFunc f) { func_header = f; }
//! \~english Set payload check function
//! \~russian Установить функцию проверки полезной нагрузки
void setPayloadCheckSlot(PacketExtractorPayloadFunc f) { func_payload = f; }
//! \~english Set footer check function
//! \~russian Установить функцию проверки окончания
void setFooterCheckSlot(PacketExtractorFooterFunc f) { func_footer = f; }
//! Set extract algorithm
//! \~english Set extract algorithm
//! \~russian Установить алгоритм извлечения
void setSplitMode(SplitMode mode) { setProperty("splitMode", int(mode)); }
//! Set payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms
//! \~english Set payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms
//! \~russian Установить размер полезной нагрузки
void setPayloadSize(int size);
//! Set header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms
//! \~english Set header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms
//! \~russian Установить данные заголовка
void setHeader(const PIByteArray & data);
//! Set footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms
//! \~english Set footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms
//! \~russian Установить данные окончания
void setFooter(const PIByteArray & data);
//! Set timeout, used for PIPacketExtractor::Timeout algorithm
//! \~english Set timeout, used for PIPacketExtractor::Timeout algorithm
//! \~russian Установить таймаут
void setTimeout(PISystemTime tm) { setProperty("timeout", tm); }
//! Returns current extract algorithm
//! \~english Returns current extract algorithm
//! \~russian Возвращает текущий алгоритм извлечения
SplitMode splitMode() const { return mode_; }
//! Returns current payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer and PIPacketExtractor::Size
//! algorithms
//! \~english Returns current payload size
//! \~russian Возвращает текущий размер полезной нагрузки
int payloadSize() const { return dataSize; }
//! Returns current header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms
//! \~english Returns current header data
//! \~russian Возвращает текущие данные заголовка
PIByteArray header() const { return src_header; }
//! Returns current footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms
//! \~english Returns current footer data
//! \~russian Возвращает текущие данные окончания
PIByteArray footer() const { return src_footer; }
//! Returns current timeout in milliseconds, used for PIPacketExtractor::Timeout algorithm
//! \~english Returns current timeout in milliseconds
//! \~russian Возвращает текущий таймаут в миллисекундах
PISystemTime timeout() const { return time_; }
//! Returns missed by validating functions bytes count
//! \~english Returns missed by validating functions bytes count
//! \~russian Возвращает количество байт, пропущенных функциями проверки
ullong missedBytes() const { return missed; }
//! Add data to extractor, raise \a packetReceived() if packet is ready
//! \~english Add data to extractor, raise \a packetReceived() if packet is ready
//! \~russian Добавить данные в экстрактор, вызвать \a packetReceived() если пакет готов
void appendData(const uchar * d, int s) { threadedRead(d, s); }
//! Add data to extractor, raise \a packetReceived() if packet is ready
//! \~english Add data to extractor, raise \a packetReceived() if packet is ready
//! \~russian Добавить данные в экстрактор, вызвать \a packetReceived() если пакет готов
void appendData(const PIByteArray & data) { threadedRead(data.data(), data.size_s()); }
EVENT2(packetReceived, const uchar *, data, int, size);