Составные имена сущностей, компонентов и интерфейсов

Для сущностей, компонентов и интерфейсов допустимо использовать составные имена, содержащие одну или несколько точек. При этом часть имени, следующая за последней точкой, называется кратким именем.

Например, если полное имя сущности – kl.VfsEntity, то краткое имя – VfsEntity. Интерфейс c полным именем main.security.Verify имеет краткое имя Verify.

Если имя несоставное (например, server), то оно является и кратким, и полным именем одновременно.

Имена и расположение файлов описаний

Имя EDL-файла должно совпадать с кратким именем сущности, которую он описывает. При этом составное имя используется для формирования пути к EDL-файлу. Например, сущность kl.VfsEntity должна быть описана в файле kl/VfsEntity.edl.

То же правило действует для компонентов и интерфейсов: имя CDL-файла должно совпадать с кратким именем компонента, а имя IDL-файла должно совпадать с кратким именем интерфейса. При этом составное имя используется для формирования пути к CDL- или IDL-файлу соответственно. Например, компонент net.Updater должен описываться в файле net/Updater.cdl, интерфейс c полным именем main.security.Verify должен описываться в файле main/security/Verify.idl.

Краткие имена сущностей, компонентов и интерфейсов не могут содержать символ подчеркивания (_). В сегментах составного имени символ подчеркивания разрешен.

Имена исполняемых файлов для запуска сущностей

При старте решения сущность Einit запускает другие сущности следующим образом: в ROMFS (в образе решения) выбирается для запуска исполняемый файл с именем, которое совпадает с кратким именем запускаемой сущности. Например, сущности Client и net.Client по умолчанию будут запущены из исполняемого файла с именем Client. Чтобы при старте решения сущность запускалась из исполняемого файла с другим именем, необходимо в init-описании использовать ключевое слово path.

Полные имена в описаниях

В EDL-, CDL- и IDL-описаниях, а также в init-описании и в конфигурации безопасности используются только полные имена сущностей, компонентов и интерфейсов. Для примера возьмем уже упоминавшиеся выше сущность kl.VfsEntity, компонент net.Updater и интерфейс main.security.Verify.

Пример EDL-описания сущности kl.VfsEntity:

VfsEntity.edl

entity kl.VfsEntity

...

Пример CDL-описания компонента net.Updater:

Updater.cdl

component net.Updater

...

Пример Init-описания:

init.yaml

entities:

- name: kl.VfsEntity

...

Пример конфигурации безопасности:

security.psl

...

/* Объявление сущности "kl.VfsEntity". */

use EDL kl.VfsEntity;

...

/* Конфигурирование запросов для вызова метода Check любых реализаций интерфейса "Verify". */

request interface=main.security.Verify, method=Check { grant () }

...

Имена NK-сгенерированных методов и типов

Имена сгенерированных типов и методов построены на основе полных имен сущностей, компонентов и интерфейсов. Например, для компонента net.Updater будет сгенерирована структура net_Updater_component, функция net_Updater_component_init, диспетчер net_Updater_component_dispatch, а также структуры запроса net_Updater_component_req и ответа net_Updater_component_res.

В начало