Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Интерфейсы различных подсистем > Устойчивая служба публикации/подписки (PPS) > Общие сведения > Объекты и их атрибуты



Объекты и их атрибуты

Описание объектов службы PPS и их атрибутов

Служба PPS в составе ЗОСРВ «Нейтрино» работает с объектами, свойства которых могут изменяться издателями. Клиенты, которые подписываются на объект, получают уведомления, когда издатель изменяет его.

Служба PPS позволяет пользователям:

Дополнительную информацию о публикации и подписке см. в главах Публикация и Подписка.


Note: С точки зрения архитектуры служба PPS ЗОСРВ «Нейтрино» схожа со многими системами управления, в которых объекты представляют собой контрольные значения, изменяемые программно или аппаратно. В качестве подписчиков могут выступать программы, которые реагируют на аварийные сигналы, дисплеи и др.

Содержание статьи:

Файлы объектов
Размеры объектов и каталогов
Специальные объекты
Синтаксис объекта
Объекты в списке файлов файловой системы
Уведомление об изменении объекта
Реагирование на удаление объекта
Атрибуты

Файлы объектов

Объекты представляют собой файлы, которые размещаются в специальной файловой системе службы PPS. По умолчанию объекты PPS располагаются в каталоге /pps. Эти объекты содержат в себе атрибуты.

Поскольку каждый объект PPS может существовать только в единственном экземпляре, объекты можно легко хранить в ПЗУ.

Представление объектов PPS в виде файлов позволяет:

Примеры:


Note: Во избежание неполадок и конфликтов при интеграции приложений из различных организаций в одну файловую систему PPS рекомендуется создавать в каталоге PPS подкаталог с именем, соответствующим веб-домену вашей организации. Например, компания «СВД Встраиваемые Системы» с доменом "kpda.ru" может использовать каталог /pps/kpda.

Размеры объектов и каталогов

Поскольку объекты службы PPS размещаются в памяти, они имеют небольшой размер:

Количество каталогов и объектов PPS ограничено только объемом доступной памяти, а уровень вложенности каталогов службы PPS — максимальной длиной путевых имен в файловой системе, которая используется для хранения файлов-объектов.


Note:
  • Не рекомендуется размещать в объектах PPS большие объемы данных. Желательно, чтобы размер большинства объектов PPS составлял сотни байт, а не килобайты.
  • Работа службы PPS с параметрами по умолчанию протестирована при использовании файловой системы, устойчивой к сбоям электропитания fs-qnx6.so. В этой конфигурации поддерживаются путевые имена, совокупная длина которых составляет до 517 байт, а длина отдельного компонента — до 508 байт. Это означает, что максимальная глубина вложенности в файловой системе fs-qnx6.so равна 50 при условии, что суммарная длина пути не превышает 517 байт.

Специальные объекты

В каталогах службы PPS могут находиться специальные объекты, которые можно открывать для управления механизмом подписки. Эти объекты перечислены в следующей таблице:

Объект Применение
.all Позволяет получать уведомления об изменениях всех объектов соответствующего каталога.
.notify Открывает дескриптор файла уведомлений в корневом каталоге файловой системы PPS.
.server Когда клиент открывает этот объект, создается его уникальный «экземпляр» или «канал», который виден только этому клиенту.

Дополнительную информацию см. в разделе Подписка.

Синтаксис объекта

Первая строка объекта содержит его имя и начинается с символа "@". В последующих строках определяются атрибуты объекта без использования специального префикса.

Например, в каталоге /pps/media/ файловой системы PPS объект "PlayCurrent" содержит метаданные песни, которая воспроизводится в мультимедийном приложении в текущий момент. Допустим, что эти метаданные соответствуют следующей схеме:

@PlayCurrent
author::[автор композиции]
album::[название альбома]
title::[название композиции]
duration::[продолжительность композиции в секундах (вещественное число)]
time::[текущее положение в композиции в секундах (вещественное число)]

При открытии и чтении этого файла с помощью функций open() с последующим вызовом read() возвращается имя объекта (имя файла с префиксом "@") и атрибуты объекта с их значениями:

@PlayCurrent
author::Beatles
album::Abbey Road
title::Come Together
duration::3.45
time::1.24


Note:
  • В именах объектов не допускается использование символов "@", "?", "/", символа перевода строки (LF) и нуль-символа NUL.
  • Каждая строка объекта PPS завершается символом перевода строки (он обозначается последовательностью "\n" в языке C или шестнадцатеричным кодом 0x0A); необходимо указывать этот символ в форме, распознаваемой клиентскими приложениями. Другими словами, все значения должны оканчиваться символом LF или NUL. Чтобы приложения могли определять кодировку, которая используется в поле значения, можно указывать ее в поле кодировки.

Объекты в списке файлов файловой системы

Объекты PPS не отмечаются какими-либо специальными идентификаторами в списках файлов файловой системы PPS. Другими словами, они выглядят как обычные файлы. Например, объект "PlayCurrent" в описанном выше примере отображается как /pps/media/PlayCurrent.

Уведомление об изменении объекта

Служба PPS сообщает издателям и подписчикам о создании, удалении и усечении объекта (файла или каталога). При выполнении этих действий она помещает строку уведомления в очередь каждого подписчика или публикатора, который открыл соответствующий объект или специальный объект .all в каталоге, где находится измененный объект.

Синтаксис строки уведомления включает в себя специальный символьный префикс, идентификатор объекта "@" и имя объекта:

Символ Пример Смысл
"+" "+@objectname" Служба PPS создала объект. Чтобы определить тип созданного объекта (файл или каталог), следует вызвать функцию stat() или fstat().
"-" "-@objectname" Служба PPS удалила объект.
"#" "#@objectname" Служба PPS выполнила усечение объекта.
"*" "*@objectname" Объект утратил критически важного подписчика. Все непостоянные атрибуты удалены. Дополнительную информацию см. в главе Параметры открытия путевых имен.

Реагирование на удаление объекта

Удаленный объект перестает быть видимым в файловой системе (в соответствии с требованиями стандарта POSIX), и только процессы, в которых он открыт, могут продолжать использовать его. Когда приложение получает уведомление об удалении объекта, оно обычно закрывает соответствующий файл.

Атрибуты

Объекты PPS включают в себя атрибуты, которые определяются пользователем и отображаются в объекте после его имени.

Имена атрибутов могут состоять из букв, цифр, символов нижнего подчеркивания и точек, но должны начинаться с буквы или нижнего подчеркивания. Строки атрибутов в файле объекта PPS имеют формат "attrname:encoding:value\n", где поле "attrname" задает имя атрибута, а "encoding" — тип кодировки поля "value". Имя атрибута и кодировка завершаются двоеточием (":"), последующие двоеточия игнорируются.

Служба PPS не интерпретирует кодировку, а передает ее от издателя к подписчику, позволяя им определять собственные произвольные кодировки. Возможные типы кодировок перечислены в следующей таблице:

Символ Кодировка
"::" Обычный текст, который заканчивается символом перевода строки
":c:" Управляющие последовательности языка C (например, "\t" и "\n"). Обратите внимание, что в этой кодировке последовательности "\n" и "\t" состоят из двух символов — "\" и "n" или "t"; в строке C они имеют вид "\\n\\t"
":b64:" Кодировка Base64.

Значение атрибута может состоять из любых символов, кроме следующих:




Предыдущий раздел: Устойчивая служба публикации/подписки (PPS)