![]() |
PIP 5.6.1
Platform-Independent Primitives
|
PIConnection — абстрактный слой над физическими устройствами ввода-вывода: пул устройств, фильтры (извлечение пакетов), отправители (периодическая отправка) и диагностика. Несколько соединений могут использовать одно физическое устройство через пул; у каждого устройства есть поток чтения, запуск и остановка — startThreadedRead() и stopThreadedRead().
Пул устройств — единственный на приложение набор уникальных устройств. PIConnection обращается к железу через этот пул, поэтому один порт или сокет может обслуживать несколько логических соединений.
Фильтр — это PIPacketExtractor и набор привязанных устройств или других фильтров. Когда поток чтения получает данные с устройства, они могут передаваться в один или несколько фильтров. У фильтров уникальные имена; filter(name) возвращает PIPacketExtractor*, filterBoundedDevices() — список привязанных устройств и фильтров. Один фильтр может получать данные из нескольких источников и быть привязан к нескольким.
Отправители — именованные таймеры, периодически отправляющие данные на привязанные устройства. Создание или добавление устройства — addSender(). У каждого отправителя свой таймер и вызов виртуального senderData(); возвращённое значение отправляется на устройства. Либо setSenderFixedData() — отправка фиксированных данных без вызова senderData().
Для каждого устройства или фильтра создаётся PIDiagnostics. Доступ — diagnostic().
PIConnection можно собрать из секции конфига или настроить позже через configureFromConfig() (см. Конфигурация из файла). Устройства задаются полными путями (см. документацию PIIODevice). makeConfig() формирует строку для вставки в конфиг.