![]() |
PIP 5.6.1
Platform-Independent Primitives
|
Выделяет пакеты из данных, поступающих от дочернего PIIODevice. Подробнее...
#include <pipacketextractor.h>
Открытые типы | |
| enum | SplitMode { None , Header , Footer , HeaderAndFooter , Size , Timeout } |
| Режимы выделения пакетов. Подробнее... | |
Открытые типы унаследованные от PIIODevice | |
| enum | DeviceMode { ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = 0x03 } |
| Режимы открытия PIIODevice. Подробнее... | |
| enum | DeviceOption { BlockingRead = 0x01 , BlockingWrite = 0x02 } |
| Общие опции, поддерживаемые некоторыми устройствами. Подробнее... | |
| enum | DeviceInfoFlag { Sequential = 0x01 , Reliable = 0x02 } |
| Характеристики канала устройства. Подробнее... | |
| typedef PIFlags< DeviceOption > | DeviceOptions |
| Битовая маска значений DeviceOption. | |
| typedef PIFlags< DeviceInfoFlag > | DeviceInfoFlags |
| Битовая маска значений DeviceInfoFlag. | |
Открытые члены | |
| PIPacketExtractor (PIIODevice *device_=nullptr, SplitMode mode=None) | |
| Создает извлекатель, привязанный к "device_", и настраивает режим выделения "mode". | |
| virtual | ~PIPacketExtractor () |
| Останавливает фоновую работу извлекателя и уничтожает объект. | |
| PIIODevice * | device () |
| Возвращает текущее дочернее устройство. | |
| void | setDevice (PIIODevice *device_) |
| Заменяет дочернее устройство на "device_". | |
| ssize_t | bytesAvailable () const override |
| Возвращает число непрочитанных байтов, доступных в дочернем устройстве. | |
| void | setHeaderCheckSlot (PacketExtractorHeaderFunc f) |
| Устанавливает пользовательский callback проверки заголовка. | |
| void | setPayloadCheckSlot (PacketExtractorPayloadFunc f) |
| Устанавливает пользовательский callback проверки полезной нагрузки. | |
| void | setFooterCheckSlot (PacketExtractorFooterFunc f) |
| Устанавливает пользовательский callback проверки окончания пакета. | |
| void | setSplitMode (SplitMode mode) |
| Переключает выделение пакетов в режим "mode". | |
| void | setPayloadSize (int size) |
| Устанавливает фиксированный размер полезной нагрузки для режимов с известным размером. | |
| void | setHeader (const PIByteArray &data) |
| Устанавливает эталонные байты заголовка. | |
| void | setFooter (const PIByteArray &data) |
| Устанавливает эталонные байты окончания пакета. | |
| void | setTimeout (PISystemTime tm) |
| Устанавливает тайм-аут накопления для режима Timeout. | |
| SplitMode | splitMode () const |
| Возвращает текущий режим выделения пакетов. | |
| int | payloadSize () const |
| Возвращает настроенный размер полезной нагрузки. | |
| PIByteArray | header () const |
| Возвращает настроенный эталонный заголовок. | |
| PIByteArray | footer () const |
| Возвращает настроенное эталонное окончание пакета. | |
| PISystemTime | timeout () const |
| Возвращает тайм-аут, используемый режимом Timeout. | |
| ullong | missedBytes () const |
| Возвращает число байтов, пропущенных при ресинхронизации. | |
| void | appendData (const uchar *d, int s) |
| Передает сырые байты в извлекатель. Генерирует packetReceived(), когда распознан полный пакет. | |
| void | appendData (const PIByteArray &data) |
| Передает массив байтов в извлекатель. Генерирует packetReceived(), когда распознан полный пакет. | |
Открытые члены унаследованные от PIIODevice | |
| PIIODevice () | |
| Создает пустой PIIODevice. | |
| PIIODevice (const PIString &path, DeviceMode mode=ReadWrite) | |
| Создает PIIODevice с путём "path" и режимом открытия "mode". | |
| virtual | ~PIIODevice () |
| Уничтожает базовый объект устройства. | |
| DeviceMode | mode () const |
| Возвращает текущий режим открытия. | |
| void | setMode (DeviceMode m) |
| Устанавливает режим открытия без переоткрытия устройства. | |
| DeviceOptions | options () const |
| Возвращает текущие опции устройства. | |
| bool | isOptionSet (DeviceOption o) const |
| Возвращает, включена ли опция "o". | |
| void | setOptions (DeviceOptions o) |
| Полностью заменяет текущие опции устройства на "o". | |
| bool | setOption (DeviceOption o, bool yes=true) |
| Устанавливает опцию "o" в состояние "yes" и возвращает её предыдущее состояние. | |
| DeviceInfoFlags | infoFlags () const |
| Возвращает характеристики канала устройства. | |
| PIString | path () const |
| Возвращает текущий путь устройства. | |
| void | setPath (const PIString &path) |
| Устанавливает путь устройства без его переоткрытия. | |
| bool | isReadable () const |
| Возвращает, разрешает ли текущий режим чтение. | |
| bool | isWriteable () const |
| Возвращает, разрешает ли текущий режим запись. | |
| bool | isOpened () const |
| Возвращает, открыто ли сейчас устройство. | |
| bool | isClosed () const |
| Возвращает, закрыто ли сейчас устройство. | |
| virtual bool | canRead () const |
| Возвращает, возможно ли чтение прямо сейчас. | |
| virtual bool | canWrite () const |
| Возвращает, возможна ли запись прямо сейчас. | |
| void | setReopenEnabled (bool yes=true) |
| Включает или выключает автоматические попытки переоткрытия при потоковом чтении. | |
| void | setReopenTimeout (PISystemTime timeout) |
| Устанавливает задержку между автоматическими попытками переоткрытия. | |
| bool | isReopenEnabled () const |
| Возвращает, включено ли автоматическое переоткрытие. | |
| PISystemTime | reopenTimeout () |
| Возвращает задержку между автоматическими попытками переоткрытия. | |
| void | setThreadedReadSlot (ReadRetFunc func) |
| Устанавливает callback, вызываемый после успешного потокового чтения. Подробнее... | |
| void | setThreadedReadData (void *d) |
| Устанавливает пользовательские данные, передаваемые в callback потокового чтения. | |
| void | setThreadedReadBufferSize (int new_size) |
| Устанавливает размер буфера фонового чтения в байтах. Подробнее... | |
| int | threadedReadBufferSize () const |
| Возвращает размер буфера фонового чтения в байтах. | |
| const uchar * | threadedReadBuffer () const |
| Возвращает указатель на внутренний буфер потокового чтения. | |
| void * | threadedReadData () const |
| Возвращает пользовательские данные, передаваемые в callback потокового чтения. | |
| bool | isThreadedRead () const |
| Возвращает, запущено ли потоковое чтение. | |
| bool | isThreadedReadStopping () const |
| Возвращает, находится ли потоковое чтение в процессе остановки. | |
| void | startThreadedRead () |
| Запускает потоковое чтение. | |
| void | startThreadedRead (ReadRetFunc func) |
| Устанавливает callback потокового чтения в "func" и запускает потоковое чтение. | |
| void | stopThreadedRead () |
| Запрашивает остановку потокового чтения. | |
| void | terminateThreadedRead () |
| Прерывает потоковое чтение. Подробнее... | |
| bool | waitThreadedReadFinished (PISystemTime timeout={}) |
| Ожидает завершения потокового чтения, но не дольше "timeout". | |
| uint | threadedReadTimeout () const |
| Возвращает задержку между безуспешными попытками потокового чтения в миллисекундах. | |
| void | setThreadedReadTimeout (uint ms) |
| Устанавливает задержку между безуспешными попытками потокового чтения в миллисекундах. | |
| bool | isThreadedWrite () const |
| Возвращает, запущена ли потоковая запись. | |
| void | startThreadedWrite () |
| Запускает потоковую запись. | |
| void | stopThreadedWrite () |
| Запрашивает остановку потоковой записи. | |
| void | terminateThreadedWrite () |
| Прерывает потоковую запись. Подробнее... | |
| bool | waitThreadedWriteFinished (PISystemTime timeout={}) |
| Ожидает завершения потоковой записи, но не дольше "timeout". | |
| void | clearThreadedWriteQueue () |
| Очищает очередь заданий потоковой записи. | |
| void | start () |
| Запускает потоковое чтение и потоковую запись. | |
| void | stop () |
| Запрашивает остановку потокового чтения и потоковой записи. | |
| void | stopAndWait (PISystemTime timeout={}) |
| Останавливает оба фоновых потока и ожидает их завершения. | |
| virtual void | interrupt () |
| Прерывает блокирующую операцию устройства. | |
| ssize_t | read (void *read_to, ssize_t max_size) |
| Читает в "read_to" не более "max_size" байт. | |
| ssize_t | read (PIMemoryBlock mb) |
| Читает данные в блок памяти "mb". | |
| PIByteArray | read (ssize_t max_size) |
| Читает не более "max_size" байт и возвращает их как PIByteArray. | |
| virtual ssize_t | bytesAvailable () const |
| Возвращает количество байт доступных для чтения. Подробнее... | |
| ssize_t | write (const void *data, ssize_t max_size) |
| Записывает из "data" не более "max_size" байт. | |
| PIByteArray | readForTime (PISystemTime timeout) |
| Читает данные в течение "timeout" и возвращает накопленные байты. | |
| ullong | writeThreaded (const void *data, ssize_t max_size) |
| Помещает "data" в очередь потоковой записи и возвращает ID задания. | |
| ullong | writeThreaded (const PIByteArray &data) |
| Помещает массив байт "data" в очередь потоковой записи и возвращает ID задания. | |
| bool | configure (const PIString &config_file, const PIString §ion, bool parent_section=false) |
| Настраивает устройство из секции "section" файла "config_file". Подробнее... | |
| virtual PIConstChars | fullPathPrefix () const |
| Возвращает префикс устройства, используемый в полной строке пути. Creating devices by unambiguous string. | |
| PIString | constructFullPath () const |
| Возвращает полную строку описания этого устройства, fullPathPrefix() + "://" + ... | |
| void | configureFromFullPath (const PIString &full_path) |
| Настраивает устройство из параметров полной строки описания. | |
| PIVariantTypes::IODevice | constructVariant () const |
| Создает описание PIVariantTypes::IODevice для этого устройства. | |
| void | configureFromVariant (const PIVariantTypes::IODevice &d) |
| Настраивает устройство из PIVariantTypes::IODevice. | |
| ssize_t | write (const PIMemoryBlock &mb) |
| Записывает в устройство блок памяти "mb". | |
| bool | open () |
| Открывает устройство с текущими путём и режимом. | |
| bool | open (const PIString &_path) |
| Открывает устройство с путём "path". | |
| bool | open (DeviceMode _mode) |
| Открывает устройство с режимом "mode". | |
| bool | open (const PIString &_path, DeviceMode _mode) |
| Открывает устройство с путём "path" и режимом "mode". | |
| bool | close () |
| Закрывает устройство. | |
| ssize_t | write (PIByteArray data) |
| Записывает "data" в устройство. | |
| virtual void | flush () |
| Немедленно сбрасывает буферы устройства. | |
| void | opened () |
| Вызывается после успешного открытия. | |
| void | closed () |
| Вызывается после успешного закрытия. | |
| void | threadedReadEvent (const uchar *readed, ssize_t size) |
| Вызывается после того, как потоковое чтение получило данные. | |
| void | threadedWriteEvent (ullong id, ssize_t written_size) |
| Вызывается после того, как потоковая запись обработала задание с ID "id". | |
Открытые члены унаследованные от PIObject | |
| PIObject (const PIString &name=PIString()) | |
Создает объект и инициализирует его свойство name. | |
| virtual | ~PIObject () |
| Уничтожает объект, вызывает deleted() и отключает его от событийного графа. | |
| PIString | name () const |
Возвращает свойство name этого объекта. | |
| virtual const char * | className () const |
| Возвращает зарегистрированное имя класса этого объекта. | |
| virtual uint | classNameID () const |
| Возвращает хэш от className(). | |
| virtual const char * | parentClassName () const |
| Возвращает зарегистрированное имя родительского класса, либо пустую строку для корня. | |
| bool | debug () const |
| Возвращает, включен ли вывод piCoutObj для этого объекта. | |
| void | setName (const PIString &name) |
Устанавливает свойство name этого объекта. | |
| void | setDebug (bool debug) |
| Включает или отключает вывод piCoutObj для этого объекта. | |
| PIVariant | property (const char *name) const |
| Возвращает свойство объекта по имени "name". | |
| void | setProperty (const char *name, const PIVariant &value) |
| Устанавливает свойство "name" в значение "value" и создаёт его при необходимости. Подробнее... | |
| bool | isPropertyExists (const char *name) const |
| Возвращает, существует ли свойство "name". | |
| void | setThreadSafe (bool yes) |
| Включает или отключает внутренний мьютекс объекта во время выполнения обработчиков. Подробнее... | |
| bool | isThreadSafe () const |
| Возвращает, включен ли внутренний мьютекс объекта для выполнения обработчиков. | |
| bool | execute (const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Выполняет зарегистрированный метод или метод-обработчик по имени с переданными аргументами. Подробнее... | |
| bool | execute (const PIString &method) |
| Перегрузка execute() для метода без аргументов. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0) |
| Перегрузка execute() для одного аргумента. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Перегрузка execute() для двух аргументов. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Перегрузка execute() для трёх аргументов. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Перегрузка execute() для четырёх аргументов. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Ставит выполнение зарегистрированного метода в очередь объекта-исполнителя. Подробнее... | |
| bool | executeQueued (PIObject *performer, const PIString &method) |
| Перегрузка executeQueued() для метода без аргументов. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0) |
| Перегрузка executeQueued() для одного аргумента. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Перегрузка executeQueued() для двух аргументов. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Перегрузка executeQueued() для трёх аргументов. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Перегрузка executeQueued() для четырёх аргументов. | |
| void | dump (const PIString &line_prefix=PIString()) const |
| Выводит диагностическую информацию об объекте в проектный поток вывода. | |
| PIStringList | scopeList () const |
| Возвращает зарегистрированную цепочку наследования объекта, включая его собственный класс. | |
| PIStringList | methodsEH () const |
| Возвращает полные сигнатуры всех зарегистрированных событий и обработчиков для области этого класса. | |
| bool | isMethodEHContains (const PIString &name) const |
| Возвращает, существует ли зарегистрированное событие или обработчик с таким именем. | |
| PIString | methodEHArguments (const PIString &name) const |
| Возвращает список типов аргументов зарегистрированного метода через запятую. | |
| PIString | methodEHFullFormat (const PIString &name) const |
| Возвращает полную зарегистрированную сигнатуру метода. | |
| PIString | methodEHFromAddr (const void *addr) const |
| Возвращает имя зарегистрированного метода для указанного адреса точки входа. | |
| void | piDisconnect (const PIString &sig, PIObject *dest, void *ev_h) |
| Разрывает соединения этого объекта-источника с конкретным обработчиком объекта-приемника для события "sig". | |
| void | piDisconnect (const PIString &sig, PIObject *dest) |
| Разрывает все соединения этого объекта-источника от события "sig" к объекту-приемнику "dest". | |
| void | piDisconnect (const PIString &sig) |
| Разрывает все соединения этого объекта-источника от события "sig". | |
| bool | isPIObject () const |
| Возвращает, указывает ли этот указатель на ещё существующий экземпляр PIObject. | |
| template<typename T > | |
| bool | isTypeOf () const |
| Возвращает, принадлежит ли этот объект классу "T" или одному из его зарегистрированных потомков. | |
| template<typename T > | |
| T * | cast () const |
Возвращает этот объект, приведённый к типу "T", если isTypeOf<T>() успешно, иначе nullptr. | |
| void | callQueuedEvents () |
| Выполняет все отложенные доставки, поставленные в очередь этому объекту-исполнителю. | |
| bool | maybeCallQueuedEvents () |
| Выполняет отложенные доставки только если этот объект использовался как исполнитель. Подробнее... | |
| void | deleteLater () |
| Планирует отложенное удаление объекта. Подробнее... | |
| void | deleted (PIObject *o) |
| Вызывается непосредственно перед уничтожением объекта. Подробнее... | |
Защищенные члены | |
| virtual int | validateHeader (const uchar *src, const uchar *rec, int size) |
| Проверяет заголовок пакета и при необходимости возвращает размер полезной нагрузки. Подробнее... | |
| virtual bool | validateFooter (const uchar *src, const uchar *rec, int size) |
| Проверяет окончание пакета. Реализация по умолчанию побайтно сравнивает "src" и "rec". | |
| virtual bool | validatePayload (const uchar *rec, int size) |
| Проверяет полезную нагрузку пакета. Реализация по умолчанию принимает любую полезную нагрузку. | |
Защищенные члены унаследованные от PIIODevice | |
| virtual bool | configureDevice (const void *e_main, const void *e_parent=0) |
| Переопределите для настройки устройства из записей "e_main" и необязательной "e_parent", приведённых к PIConfig::Entry*. | |
| virtual bool | openDevice ()=0 |
| Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()! | |
| virtual bool | closeDevice () |
| Переопределите для закрытия устройства; обратное возвращаемое значение сохраняется в "opened_". | |
| virtual ssize_t | readDevice (void *read_to, ssize_t max_size) |
| Переопределите для чтения данных из устройства | |
| virtual ssize_t | writeDevice (const void *data, ssize_t max_size) |
| Переопределите для записи данных в устройство | |
| virtual bool | threadedRead (const uchar *readed, ssize_t size) |
| Вызывается после успешного потокового чтения; по умолчанию вызывает внешний callback, заданный через setThreadedReadSlot(). | |
| virtual PIString | constructFullPathDevice () const |
| Переопределите для построения device-specific части полной строки пути. По умолчанию возвращает path(). | |
| virtual void | configureFromFullPathDevice (const PIString &full_path) |
| Переопределите для настройки устройства из device-specific параметров полной строки пути. По умолчанию вызывает setPath(). | |
| virtual PIPropertyStorage | constructVariantDevice () const |
| Переопределите для построения device-specific свойств варианта. По умолчанию возвращает PIPropertyStorage со свойством "path". | |
| virtual void | configureFromVariantDevice (const PIPropertyStorage &d) |
| Переопределите для настройки устройства из PIPropertyStorage. Режим и опции уже применены. Реализация по умолчанию применяет "path". | |
| virtual void | optionsChanged () |
| Переопределите для реакции на изменение опций устройства. | |
| virtual DeviceInfoFlags | deviceInfoFlags () const |
| Переопределите для возврата актуальных DeviceInfoFlags. По умолчанию возвращает 0. | |
| virtual void | threadedReadBufferSizeChanged () |
| Переопределите для реакции на новое значение threadedReadBufferSize(). | |
Защищенные члены унаследованные от PIObject | |
| PIObject * | emitter () const |
| Возвращает объект-источник, который вызвал текущее событие. Подробнее... | |
| virtual void | propertyChanged (const char *name) |
| Виртуальный метод, вызываемый после изменения свойства "name" через setProperty(). | |
Events | |
| void | packetReceived (const uchar *data, int size) |
| Генерируется, когда текущие входные данные проходят настроенные правила выделения. | |
Дополнительные унаследованные члены | |
Открытые статические члены унаследованные от PIIODevice | |
| static PIIODevice * | createFromFullPath (const PIString &full_path) |
| Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его. Подробнее... | |
| static PIIODevice * | createFromVariant (const PIVariantTypes::IODevice &d) |
| Пытается создать новое устройство по префиксу, настраивает с помощью configureFromVariant() и возвращает его. | |
| static PIString | normalizeFullPath (const PIString &full_path) |
| Возвращает нормализованную полную строку пути для "full_path". | |
| static void | splitFullPath (PIString fpwm, PIString *full_path, DeviceMode *mode=0, DeviceOptions *opts=0) |
| Разбирает полную строку пути на путь, режим и опции. | |
| static PIStringList | availablePrefixes () |
| Возвращает префиксы всех зарегистрированных устройств | |
| static PIStringList | availableClasses () |
| Возвращает имена классов всех зарегистрированных устройств. | |
Открытые статические члены унаследованные от PIObject | |
| static bool | execute (PIObject *o, const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Статическая удобная обёртка над execute(). | |
| static bool | execute (PIObject *o, const PIString &method) |
| Статическая перегрузка execute() без аргументов. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0) |
| Статическая перегрузка execute() для одного аргумента. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Статическая перегрузка execute() для двух аргументов. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Статическая перегрузка execute() для трёх аргументов. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Статическая перегрузка execute() для четырёх аргументов. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Статическая удобная обёртка над executeQueued(). | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method) |
| Статическая перегрузка executeQueued() без аргументов. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0) |
| Статическая перегрузка executeQueued() для одного аргумента. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Статическая перегрузка executeQueued() для двух аргументов. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Статическая перегрузка executeQueued() для трёх аргументов. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Статическая перегрузка executeQueued() для четырёх аргументов. | |
| static PIObject::Connection | piConnect (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, void *ev_h, void *e_h, int args, const char *loc) |
Низкоуровневый помощник прямого соединения, лежащий под устаревшими макросами CONNECT*. | |
| static PIObject::Connection | piConnectU (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, const PIString &hname, const char *loc, PIObject *performer=0) |
| Низкоуровневый помощник соединения по имени, лежащий под CONNECTU() и CONNECTU_QUEUED(). | |
| static PIObject::Connection | piConnectLS (PIObject *src, const PIString &sig, std::function< void()> *f, const char *loc) |
| Низкоуровневый помощник, который соединяет событие с лямбдой или обёрткой функтора. | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h) |
| Разрывает соединения объекта-источника "src" с конкретным обработчиком объекта-приемника для события "sig". | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest) |
| Разрывает все соединения объекта-источника "src" от события "sig" к объекту-приемнику "dest". | |
| static void | piDisconnect (PIObject *src, const PIString &sig) |
| Разрывает все соединения объекта-источника "src" от события "sig". | |
| static void | raiseEvent (PIObject *sender, const uint eventID) |
| Внутренний помощник доставки для зарегистрированных событий без аргументов. | |
| template<typename T0 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0()) |
| Внутренний помощник доставки для зарегистрированных событий с одним аргументом. | |
| template<typename T0 , typename T1 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1()) |
| Внутренний помощник доставки для зарегистрированных событий с двумя аргументами. | |
| template<typename T0 , typename T1 , typename T2 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2()) |
| Внутренний помощник доставки для зарегистрированных событий с тремя аргументами. | |
| template<typename T0 , typename T1 , typename T2 , typename T3 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2(), const T3 &v3=T3()) |
| Внутренний помощник доставки для зарегистрированных событий с четырьмя аргументами. | |
| static PIObject * | findByName (const PIString &name) |
Возвращает первый живой объект с именем "name", либо nullptr. | |
| static bool | isPIObject (const PIObject *o) |
| Возвращает, указывает ли "o" на ещё существующий экземпляр PIObject. | |
| static bool | isPIObject (const void *o) |
| Перегрузка isPIObject() для нетипизированного указателя. | |
| template<typename T > | |
| static bool | isTypeOf (const PIObject *o) |
| Возвращает, принадлежит ли "o" классу "T" или одному из его зарегистрированных потомков. | |
| template<typename T > | |
| static bool | isTypeOf (const void *o) |
| Перегрузка isTypeOf() для нетипизированного указателя. | |
| static PIString | simplifyType (const char *a, bool readable=true) |
| Упрощает запись типа C++ для метаданных зарегистрированных методов. | |
Открытые атрибуты унаследованные от PIIODevice | |
| bool | reopenEnabled |
| setReopenEnabled, по умолчанию "true". | |
| int | reopenTimeout |
| setReopenTimeout, по умолчанию 1_s. | |
| int | threadedReadBufferSize |
| setThreadedReadBufferSize в байтах, по умолчанию 4096. | |
Относящиеся к классу функции унаследованные от PIIODevice | |
| template<typename T > | |
| T | readDeviceSetting (const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep) |
| Вспомогательная функция для чтения настроек устройства из записей конфигурации. Подробнее... | |
| #define | REGISTER_DEVICE(class) |
| Включить создание экземпляров устройства с помощью метода PIIODevice::createFromFullPath(). Подробнее... | |
| #define | PIIODEVICE(class, prefix) |
| Используйте этот макрос вместо PIOBJECT при объявлении своего PIIODevice. Подробнее... | |
Относящиеся к классу функции унаследованные от PIObject | |
| #define | piCoutObj |
| Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdOut) для наследников PIObject. | |
| #define | piCerrObj |
| Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdErr) для наследников PIObject. | |
| #define | PIOBJECT(name) |
| Поместите этот макрос внутрь объявления прямого наследника PIObject, чтобы включить регистрацию событий, обработчиков и метаданных класса. | |
| #define | PIOBJECT_SUBCLASS(name, parent) |
| Поместите этот макрос внутрь объявления наследника PIObject, чтобы унаследовать зарегистрированные методы и цепочку классов от "parent". | |
| #define | EVENT_HANDLER0(ret, name) ret name() |
Объявляет зарегистрированный метод-обработчик событий с сигнатурой ret name(). | |
| #define | EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) |
| Объявляет зарегистрированный метод-обработчик событий с одним аргументом. | |
| #define | EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) |
| Объявляет зарегистрированный метод-обработчик событий с двумя аргументами. | |
| #define | EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) |
| Объявляет зарегистрированный метод-обработчик событий с тремя аргументами. | |
| #define | EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Объявляет зарегистрированный метод-обработчик событий с четырьмя аргументами. | |
| #define | EVENT_HANDLER EVENT_HANDLER0 |
| Аналог EVENT_HANDLER0. | |
| #define | EVENT_VHANDLER0(ret, name) virtual ret name() |
Объявляет виртуальный зарегистрированный метод-обработчик с сигнатурой virtual ret name(). | |
| #define | EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) |
| Объявляет виртуальный зарегистрированный метод-обработчик с одним аргументом. | |
| #define | EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) |
| Объявляет виртуальный зарегистрированный метод-обработчик с двумя аргументами. | |
| #define | EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) |
| Объявляет виртуальный зарегистрированный метод-обработчик с тремя аргументами. | |
| #define | EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Объявляет виртуальный зарегистрированный метод-обработчик с четырьмя аргументами. | |
| #define | EVENT_VHANDLER EVENT_VHANDLER0 |
| Аналог EVENT_VHANDLER0. | |
| #define | EVENT0(name) void name(); |
| Объявляет метод-событие без аргументов. | |
| #define | EVENT1(name, type0, var0) void name(type0 var0); |
| Объявляет метод-событие с одним аргументом. | |
| #define | EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); |
| Объявляет метод-событие с двумя аргументами. | |
| #define | EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); |
| Объявляет метод-событие с тремя аргументами. | |
| #define | EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); |
| Объявляет метод-событие с четырьмя аргументами. | |
| #define | EVENT EVENT0 |
| Аналог EVENT0. | |
| #define | RAISE_EVENT0(src, event) |
| Совместимый вспомогательный макрос, вызывающий событие "event" у объекта-источника "src". | |
| #define | RAISE_EVENT1(src, event, v0) |
| Совместимый вспомогательный макрос, вызывающий событие "event" с одним аргументом. | |
| #define | RAISE_EVENT2(src, event, v0, v1) |
| Совместимый вспомогательный макрос, вызывающий событие "event" с двумя аргументами. | |
| #define | RAISE_EVENT3(src, event, v0, v1, v2) |
| Совместимый вспомогательный макрос, вызывающий событие "event" с тремя аргументами. | |
| #define | RAISE_EVENT4(src, event, v0, v1, v2, v3) |
| Совместимый вспомогательный макрос, вызывающий событие "event" с четырьмя аргументами. | |
| #define | CONNECTU(src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее... | |
| #define | CONNECTU_QUEUED(src, event, dest, handler, performer) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее... | |
| #define | CONNECTL(src, event, functor) |
| Соединяет событие "event" объекта "src" к лямбда-функции "functor". Подробнее... | |
| #define | CONNECT0(ret, src, event, dest, handler) |
| Устаревший совместимый макрос, который соединяет событие с зарегистрированным обработчиком через явное указание сигнатуры. Подробнее... | |
| #define | CONNECT1(ret, type0, src, event, dest, handler) |
| Устаревший совместимый макрос для зарегистрированного события или обработчика с одним аргументом. Подробнее... | |
| #define | CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Устаревший совместимый макрос для зарегистрированного события или обработчика с двумя аргументами. Подробнее... | |
| #define | CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Устаревший совместимый макрос для зарегистрированного события или обработчика с тремя аргументами. Подробнее... | |
| #define | CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Устаревший совместимый макрос для зарегистрированного события или обработчика с четырьмя аргументами. Подробнее... | |
| #define | CONNECT CONNECT0 |
| Аналог CONNECT0. Подробнее... | |
| #define | WEAK_CONNECT0(ret, src, event, dest, handler) |
| Устаревший совместимый макрос, который пропускает проверку исходного метода. Подробнее... | |
| #define | WEAK_CONNECT1(ret, type0, src, event, dest, handler) |
| Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с одним аргументом. Подробнее... | |
| #define | WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с двумя аргументами. Подробнее... | |
| #define | WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с тремя аргументами. Подробнее... | |
| #define | WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Устаревший совместимый макрос, который пропускает проверку исходного метода для случая с четырьмя аргументами. Подробнее... | |
| #define | WEAK_CONNECT WEAK_CONNECT0 |
| Аналог WEAK_CONNECT0. Подробнее... | |
| #define | DISCONNECT0(ret, src, event, dest, handler) |
| Разрывает соединение зарегистрированного события с зарегистрированным обработчиком. | |
| #define | DISCONNECT1(ret, type0, src, event, dest, handler) |
| Разрывает соединение зарегистрированного события с одним аргументом и зарегистрированного обработчика. | |
| #define | DISCONNECT2(ret, type0, type1, src, event, dest, handler) |
| Разрывает соединение зарегистрированного события с двумя аргументами и зарегистрированного обработчика. | |
| #define | DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Разрывает соединение зарегистрированного события с тремя аргументами и зарегистрированного обработчика. | |
| #define | DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Разрывает соединение зарегистрированного события с четырьмя аргументами и зарегистрированного обработчика. | |
| #define | DISCONNECT DISCONNECT0 |
| Аналог DISCONNECT0. | |
| #define | HANDLER(handler) |
| Низкоуровневый вспомогательный макрос, который разворачивается в точку входа зарегистрированного обработчика. | |
Выделяет пакеты из данных, поступающих от дочернего PIIODevice.
Packets extractor.
Класс PIPacketExtractor предоставляет распознавание пакетов из потока данных с использованием различных алгоритмов.
This class implements packet recognition by various algorithms and custom validating from data stream. Stream is formed from child PIIODevice passed from contructor or with function setDevice().
PIPacketExtractor works with child PIIODevice. read and write functions directly call child device functions. You should start threaded read of extractor (not child device) to proper work. Extractor read data from child device, try to detect packet from readed data and raise packetReceived() event on success.
There are 6 algorithms:
There are three parameters:
Extractor can detect packet with compare your header with readed data. It is default implementation of function packetHeaderValidate(). If header validating passed, function packetValidate() will be called. If either of this function return false extractor shifts by one byte and takes next header. If both functions returns true extractor shifts by whole packet size.
Режимы выделения пакетов.
| Элементы перечислений | |
|---|---|
| None | Считать каждый прочитанный блок отдельным пакетом |
| Header | Искать header() и использовать настроенный размер полезной нагрузки или результат callback |
| Footer | Использовать фиксированный размер полезной нагрузки и проверять завершающий footer() |
| HeaderAndFooter | |
| Size | Использовать payloadSize() как полный размер пакета |
| Timeout | Накопить байты до истечения timeout() после первого чтения |
|
protectedvirtual |
Проверяет заголовок пакета и при необходимости возвращает размер полезной нагрузки.
Реализация по умолчанию побайтно сравнивает "src" и "rec" и при успехе возвращает настроенный payloadSize().