CDL-описание
CDL-описания помещаются в отдельные файлы *.cdl
, которые содержат следующие данные:
- Имя компонента. Используется декларация:
component <имя компонента>
- [Опционально] Интерфейс безопасности. Используется декларация:
security <имя интерфейса>
- [Опционально] Список служб. Используется декларация:
endpoints {
<имя службы : имя интерфейса>
...
}
Каждая служба указывается отдельной строкой. Имя службы не может содержать символов подчеркивания
_
. Список может содержать несколько служб с одинаковым интерфейсом. Каждая служба в списке имеет уникальное имя. - [Опционально] Список экземпляров вложенных компонентов. Используется декларация:
components {
<имя экземпляра компонента : имя компонента>
...
}
Каждый экземпляр компонента указывается отдельной строкой. Имя экземпляра компонента не может содержать символов подчеркивания
_
. Список может содержать несколько экземпляров одного компонента. Каждый экземпляр компонента в списке имеет уникальное имя.
Язык CDL чувствителен к регистру символов.
В CDL-описании могут использоваться однострочные и многострочные комментарии.
В CDL-описании используется как минимум одна опциональная декларация. Если в CDL-описании не использовать ни одной опциональной декларации, то этому описанию будет соответствовать "пустой" компонент, который не предоставляет служб, не содержит вложенных компонентов и не поддерживает интерфейс безопасности.
Примеры CDL-файлов
KscProductEventsProvider.cdl
// Компонент предоставляет одну службу.
component kl.KscProductEventsProvider
endpoints {
eventProvider : kl.IKscProductEventsProvider
}
KscConnectorComponent.cdl
// Компонент предоставляет несколько служб.
component kl.KscConnectorComponent
endpoints {
KscConnCommandSender : kl.IKscConnCommandSender
KscConnController : kl.IKscConnController
KscConnSettingsHolder : kl.IKscConnSettingsHolder
KscDataProvider : kl.IKscDataProvider
ProductDataHolder : kl.IProductDataHolder
KscDataNotifier : kl.IKscDataNotifier
KscConnectorStateNotifier : kl.IKscConnectorStateNotifier
}
FsVerifier.cdl
/* Компонент не предоставляет службы, поддерживает
* интерфейс безопасности и содержит один экземпляр
* другого компонента. */
component FsVerifier
security Approve
components {
verifyComp : Verify
}