![]() |
PIP 5.6.1
Platform-Independent Primitives
|
Базовый класс устройств ввода/вывода. Подробнее...
#include <piiodevice.h>
Открытые типы | |
| 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. | |
Открытые члены | |
| 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". | |
Открытые члены унаследованные от 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) |
| Вызывается непосредственно перед уничтожением объекта. Подробнее... | |
Открытые статические члены | |
| 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++ для метаданных зарегистрированных методов. | |
Защищенные члены | |
| 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(). | |
Относящиеся к классу функции | |
(не члены класса) | |
| 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) |
| Низкоуровневый вспомогательный макрос, который разворачивается в точку входа зарегистрированного обработчика. | |
Handlers | |
| 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 handlers | |
| virtual void | flush () |
| Немедленно сбрасывает буферы устройства. | |
Базовый класс устройств ввода/вывода.
This class provide open/close logic, threaded read/write and virtual input/output functions read() and write(). You should implement pure virtual function openDevice() in your subclass.
PIIODevice have boolean variable indicated open status. Returns of functions openDevice() and closeDevice() change this variable.
PIIODevice based on PIThread, so it`s overload run() to exec read() in background thread. If read is successful virtual function threadedRead() is executed. Default implementation of this function execute external static function set by setThreadedReadSlot() with data set by setThreadedReadData(). Extrenal static function should have format
bool func_name(void * Threaded_read_data, uchar * readed_data, int readed_size)
Threaded read starts with function startThreadedRead().
PIIODevice aggregate another PIThread to perform a threaded write by function writeThreaded(). This function add task to internal queue and return queue entry ID. You should start write thread by function startThreadedWrite. On successful write event threadedWriteEvent is raised with two arguments - task ID and written bytes count.
PIIODevice have internal buffer for threaded read, and threadedRead() function receive pointer to this buffer in first argument. You can adjust size of this buffer by function setThreadedReadBufferSize()
Default size of this buffer is 4096 bytes.
When threaded read is begin its call open() if device is closed. While threaded read running PIIODevice check if device opened every read and if not call open() every reopen timeout if reopen enabled. Reopen timeout is set by setReopenTimeout(), reopen enable is set by setReopenEnabled().
This is virtual function configureDevice() which executes when configure() executes. This function takes two arguments: "e_main" and "e_parent" as void*. There are pointers to PIConfig::Entry entries of section "section" and their parent. If there is no parent "e_parent" = 0. Function configure() set three parameters of device: "reopenEnabled", "reopenTimeout" and "threadedReadBufferSize", then execute function configureDevice().
Each ancestor of PIIODevice reimlements configureDevice() function to be able to be confured from configuration file. This parameters described at section "Configurable parameters" in the class reference.
Usage example:
Implementation example:
There are some virtual functions to describe child class without its declaration.
constructFullPath() should returns full unambiguous string, contains prefix and all device parameters
configureFromFullPath() provide configuring device from full unambiguous string without prefix and "://"
Macro PIIODEVICE should be used instead of PIOBJECT
Macro REGISTER_DEVICE should be used after declaration of class, i.e. at the last line of *.h file
If custom I/O device corresponds there rules, it can be returned by function createFromFullPath().
Each PIP I/O device has custom unambiguous string description:
| void PIIODevice::setThreadedReadSlot | ( | ReadRetFunc | func | ) |
Устанавливает callback, вызываемый после успешного потокового чтения.
Устанавливает внешний статический метод, который будет вызван после каждого успешного потокового чтения. Метод должен быть в формате "bool func(void * data, uchar * readed, int size)"
| void PIIODevice::setThreadedReadBufferSize | ( | int | new_size | ) |
Устанавливает размер буфера фонового чтения в байтах.
По умолчанию 4096 байт. Если устройство за одно чтение может читать более 4096 байт, необходимо использовать этот метод для установки нужного размера буфера
| void PIIODevice::terminateThreadedRead | ( | ) |
Прерывает потоковое чтение.
| void PIIODevice::terminateThreadedWrite | ( | ) |
Прерывает потоковую запись.
|
inlinevirtual |
Возвращает количество байт доступных для чтения.
Эта функция как правило используется чтобы знать какой размер буфера нужен в памяти для чтения. Если функция возвращает -1 это значит что количество байт для чтения не известно.
Переопределяется в PICloudClient, PICloudServer::Client, PIFile, PIIOByteArray, PIIOString, PIPeer, PISPI, PITransparentDevice и PIPacketExtractor.
| bool PIIODevice::configure | ( | const PIString & | config_file, |
| const PIString & | section, | ||
| bool | parent_section = false |
||
| ) |
Настраивает устройство из секции "section" файла "config_file".
Если "parent_section" равно true, то дополнительные параметры также читаются из родительской секции.
|
static |
Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его.
В метод configureFromFullPath() "full_path" передается без fullPathPrefix() и "://". См. Creating devices by unambiguous string
|
related |
Вспомогательная функция для чтения настроек устройства из записей конфигурации.
Сначала пытается прочитать "name" из родительской секции ep, затем из локальной секции em и возвращает "def", если запись не найдена.
|
related |
Включить создание экземпляров устройства с помощью метода PIIODevice::createFromFullPath().
Этот макрос может быть расположен в cpp или заголовочном файле, но предпочтительнее распологать в заголовочном
|
related |
Используйте этот макрос вместо PIOBJECT при объявлении своего PIIODevice.
"prefix" это уникальный префикс устройства, используемый в createFromFullPath().