KasperskyOS Community Edition 1.2

EDL-описание

EDL-описания помещаются в отдельные файлы *.edl и содержат декларации на языке EDL (Entity Definition Language):

  1. Имя класса процессов. Используется декларация:
    entity <имя класса процессов>
  2. [Опционально] Список экземпляров компонентов. Используется декларация:
    components { <имя экземпляра компонента : имя компонента> [...] }

    Каждый экземпляр компонента указывается отдельной строкой. Имя экземпляра компонента не может содержать символов подчеркивания _. Список может содержать несколько экземпляров одного компонента. Каждый экземпляр компонента в списке имеет уникальное имя.

  3. [Опционально] Интерфейс безопасности. Используется декларация:
    security <имя интерфейса>
  4. [Опционально] Список служб. Используется декларация:
    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 }