Doxygen generated by local qwen3-coder-next
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
/*! \file pipacketextractor.h
|
||||
* \ingroup IO
|
||||
* \~\brief
|
||||
* \~english Packets extractor
|
||||
* \~russian Извлекатель пакетов
|
||||
*/
|
||||
//! \addtogroup IO
|
||||
//! \{
|
||||
//! \file pipacketextractor.h
|
||||
//! \brief
|
||||
//! \~english Packets extractor
|
||||
//! \~russian Извлекатель пакетов
|
||||
//! \details
|
||||
//! \~english The PIPacketExtractor class provides packet recognition from data stream using various algorithms.
|
||||
//! \~russian Класс PIPacketExtractor предоставляет распознавание пакетов из потока данных с использованием различных алгоритмов.
|
||||
//! \~\}
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Packets extractor
|
||||
@@ -28,21 +32,25 @@
|
||||
|
||||
#include "piiodevice.h"
|
||||
|
||||
/// TODO: написать документацию, тут ничего не понятно
|
||||
/// Pass SourceHeaderPtr, ReceivedHeaderPtr, HeaderSize.
|
||||
/// Return size of payload if packet is correct, or -1 if incorrect.
|
||||
//! \~english Header validation function type
|
||||
//! \~russian Тип функции проверки заголовка
|
||||
typedef std::function<int(const uchar *, const uchar *, int)> PacketExtractorHeaderFunc;
|
||||
|
||||
/// Pass ReceivedDataPtr, DataSize.
|
||||
/// Return true if packet is correct, false otherwise.
|
||||
//! \~english Payload validation function type
|
||||
//! \~russian Тип функции проверки полезной нагрузки
|
||||
typedef std::function<bool(const uchar *, int)> PacketExtractorPayloadFunc;
|
||||
|
||||
/// Pass SourceFooterPtr, ReceivedFooterPtr, FooterSize.
|
||||
/// Return true if packet is correct, false otherwise.
|
||||
//! \~english Footer validation function type
|
||||
//! \~russian Тип функции проверки окончания
|
||||
typedef std::function<bool(const uchar *, const uchar *, int)> PacketExtractorFooterFunc;
|
||||
|
||||
//! \~english Packets extractor
|
||||
//! \~russian Извлекатель пакетов
|
||||
//! \details
|
||||
//! \~english The PIPacketExtractor class provides packet recognition from data stream using various algorithms such as header detection,
|
||||
//! footer detection, size-based extraction, and timeout-based extraction.
|
||||
//! \~russian Класс PIPacketExtractor предоставляет распознавание пакетов из потока данных с использованием различных алгоритмов, таких как
|
||||
//! обнаружение заголовка, обнаружение окончания, извлечение по размеру и извлечение по таймауту.
|
||||
class PIP_EXPORT PIPacketExtractor: public PIIODevice {
|
||||
PIIODEVICE(PIPacketExtractor, "pckext");
|
||||
friend class PIConnection;
|
||||
@@ -50,6 +58,9 @@ class PIP_EXPORT PIPacketExtractor: public PIIODevice {
|
||||
public:
|
||||
//! \~english Extract algorithms
|
||||
//! \~russian Алгоритмы извлечения
|
||||
//! \details
|
||||
//! \~english Defines the packet extraction algorithms supported by PIPacketExtractor
|
||||
//! \~russian Определяет алгоритмы извлечения пакетов, поддерживаемые PIPacketExtractor
|
||||
enum SplitMode {
|
||||
None /** No data processing */,
|
||||
Header /** Detect packets with \a header() and following \a payloadSize() */,
|
||||
@@ -78,64 +89,108 @@ public:
|
||||
|
||||
//! \~english Get bytes available
|
||||
//! \~russian Получить доступные байты
|
||||
//! \details
|
||||
//! \~english Returns the number of bytes available for reading from the child device
|
||||
//! \~russian Возвращает количество байт, доступных для чтения из дочернего устройства
|
||||
ssize_t bytesAvailable() const override;
|
||||
|
||||
//! \~english Set header check function
|
||||
//! \~russian Установить функцию проверки заголовка
|
||||
//! \details
|
||||
//! \~english Sets the callback function used to validate packet headers
|
||||
//! \~russian Устанавливает функцию обратного вызова, используемую для проверки заголовков пакетов
|
||||
void setHeaderCheckSlot(PacketExtractorHeaderFunc f) { func_header = f; }
|
||||
|
||||
//! \~english Set payload check function
|
||||
//! \~russian Установить функцию проверки полезной нагрузки
|
||||
//! \details
|
||||
//! \~english Sets the callback function used to validate packet payload
|
||||
//! \~russian Устанавливает функцию обратного вызова, используемую для проверки полезной нагрузки пакетов
|
||||
void setPayloadCheckSlot(PacketExtractorPayloadFunc f) { func_payload = f; }
|
||||
|
||||
//! \~english Set footer check function
|
||||
//! \~russian Установить функцию проверки окончания
|
||||
//! \details
|
||||
//! \~english Sets the callback function used to validate packet footers
|
||||
//! \~russian Устанавливает функцию обратного вызова, используемую для проверки окончаний пакетов
|
||||
void setFooterCheckSlot(PacketExtractorFooterFunc f) { func_footer = f; }
|
||||
|
||||
|
||||
//! \~english Set extract algorithm
|
||||
//! \~russian Установить алгоритм извлечения
|
||||
//! \details
|
||||
//! \~english Sets the packet extraction algorithm to be used
|
||||
//! \~russian Устанавливает алгоритм извлечения пакетов, который будет использоваться
|
||||
void setSplitMode(SplitMode mode) { setProperty("splitMode", int(mode)); }
|
||||
|
||||
//! \~english Set payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms
|
||||
//! \~russian Установить размер полезной нагрузки
|
||||
//! \details
|
||||
//! \~english Sets the expected payload size for Header and Footer extraction algorithms
|
||||
//! \~russian Устанавливает ожидаемый размер полезной нагрузки для алгоритмов извлечения Header и Footer
|
||||
void setPayloadSize(int size);
|
||||
|
||||
//! \~english Set header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms
|
||||
//! \~russian Установить данные заголовка
|
||||
//! \details
|
||||
//! \~english Sets the header pattern used to identify packet start
|
||||
//! \~russian Устанавливает шаблон заголовка, используемый для идентификации начала пакета
|
||||
void setHeader(const PIByteArray & data);
|
||||
|
||||
//! \~english Set footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms
|
||||
//! \~russian Установить данные окончания
|
||||
//! \details
|
||||
//! \~english Sets the footer pattern used to identify packet end
|
||||
//! \~russian Устанавливает шаблон окончания, используемый для идентификации конца пакета
|
||||
void setFooter(const PIByteArray & data);
|
||||
|
||||
//! \~english Set timeout, used for PIPacketExtractor::Timeout algorithm
|
||||
//! \~russian Установить таймаут
|
||||
//! \details Sets the timeout duration for the Timeout extraction algorithm
|
||||
//! \~russian Устанавливает длительность таймаута для алгоритма извлечения Timeout
|
||||
void setTimeout(PISystemTime tm) { setProperty("timeout", tm); }
|
||||
|
||||
|
||||
//! \~english Returns current extract algorithm
|
||||
//! \~russian Возвращает текущий алгоритм извлечения
|
||||
//! \details
|
||||
//! \~english Returns the currently configured packet extraction algorithm
|
||||
//! \~russian Возвращает текущий настроенный алгоритм извлечения пакетов
|
||||
SplitMode splitMode() const { return mode_; }
|
||||
|
||||
//! \~english Returns current payload size
|
||||
//! \~russian Возвращает текущий размер полезной нагрузки
|
||||
//! \details
|
||||
//! \~english Returns the expected payload size used by Header and Footer algorithms
|
||||
//! \~russian Возвращает ожидаемый размер полезной нагрузки, используемый алгоритмами Header и Footer
|
||||
int payloadSize() const { return dataSize; }
|
||||
|
||||
//! \~english Returns current header data
|
||||
//! \~russian Возвращает текущие данные заголовка
|
||||
//! \details
|
||||
//! \~english Returns the configured header pattern
|
||||
//! \~russian Возвращает настроенный шаблон заголовка
|
||||
PIByteArray header() const { return src_header; }
|
||||
|
||||
//! \~english Returns current footer data
|
||||
//! \~russian Возвращает текущие данные окончания
|
||||
//! \details
|
||||
//! \~english Returns the configured footer pattern
|
||||
//! \~russian Возвращает настроенный шаблон окончания
|
||||
PIByteArray footer() const { return src_footer; }
|
||||
|
||||
//! \~english Returns current timeout in milliseconds
|
||||
//! \~russian Возвращает текущий таймаут в миллисекундах
|
||||
//! \details
|
||||
//! \~english Returns the configured timeout duration
|
||||
//! \~russian Возвращает настроенную длительность таймаута
|
||||
PISystemTime timeout() const { return time_; }
|
||||
|
||||
//! \~english Returns missed by validating functions bytes count
|
||||
//! \~russian Возвращает количество байт, пропущенных функциями проверки
|
||||
//! \details
|
||||
//! \~english Returns the number of bytes that were skipped during validation failures
|
||||
//! \~russian Возвращает количество байт, которые были пропущены при неудачных проверках
|
||||
ullong missedBytes() const { return missed; }
|
||||
|
||||
//! \~english Add data to extractor, raise \a packetReceived() if packet is ready
|
||||
@@ -146,13 +201,12 @@ public:
|
||||
//! \~russian Добавить данные в экстрактор, вызвать \a packetReceived() если пакет готов
|
||||
void appendData(const PIByteArray & data) { threadedRead(data.data(), data.size_s()); }
|
||||
|
||||
EVENT2(packetReceived, const uchar *, data, int, size);
|
||||
|
||||
//! \events
|
||||
//! \{
|
||||
|
||||
//! \fn void packetReceived(const uchar * data, int size)
|
||||
//! \brief Raise on successfull \a packetValidate() function
|
||||
EVENT2(packetReceived, const uchar *, data, int, size);
|
||||
|
||||
//! \}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user