EDL-описание
EDL-описания помещаются в отдельные файлы *.edl
и содержат декларации на языке EDL (Entity Definition Language):
- Имя класса процессов. Используется декларация:
entity <имя класса процессов>
- [Опционально] Список экземпляров компонентов. Используется декларация:
components {
<имя экземпляра компонента : имя компонента>
[...]
}
Каждый экземпляр компонента указывается отдельной строкой. Имя экземпляра компонента не может содержать символов подчеркивания
_
. Список может содержать несколько экземпляров одного компонента. Каждый экземпляр компонента в списке имеет уникальное имя. - [Опционально] Интерфейс безопасности. Используется декларация:
security <имя интерфейса>
- [Опционально] Список служб. Используется декларация:
endpoints {
<имя службы : имя интерфейса>
[...]
}
Каждая служба указывается отдельной строкой. Имя службы не может содержать символов подчеркивания
_
. Список может содержать несколько служб с одинаковым интерфейсом. Каждая служба в списке имеет уникальное имя.
Язык EDL чувствителен к регистру символов.
В EDL-описании могут использоваться однострочные и многострочные комментарии.
Интерфейс безопасности и предоставляемые службы могут задаваться в EDL-описании и в CDL-описании. Если при разработке компонента решения используются уже готовые составные части (например, в виде библиотек), которые сопровождаются CDL-описаниями, то целесообразно сослаться на них из EDL-описания через декларацию components
. В противном случае можно описать все предоставляемые службы в EDL-описании. Кроме того, в EDL-описании и в каждом CDL-описании можно отдельно задать интерфейс безопасности.
Примеры EDL-файлов
Hello.edl
// Класс процессов, которые не содержат компонентов.
entity Hello
Signald.edl
/* Класс процессов, которые содержат
* один экземпляр одного компонента. */
entity kl.Signald
components {
signals : kl.Signals
}
LIGHTCRAFT.edl
/* Класс процессов, которые содержат
* два экземпляра разных компонентов. */
entity kl.drivers.LIGHTCRAFT
components {
KUSB : kl.drivers.KUSB
KIDF : kl.drivers.KIDF
}
Downloader.edl
/* Класс процессов, которые не содержат
* компонентов и предоставляют одну службу. */
entity updater.Downloader
endpoints {
download : updater.Download
}