more ai generated doc with human review
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user