Файлы описаний в примере echo
Описание сущности Client
Сущность Client
не реализует ни одного интерфейса, поэтому в ее EDL-описании достаточно объявить имя сущности:
Client.edl
/* Описание сущности Client. */
entity echo.Client
Описание сущности Server
Описание сущности Server
должно содержать информацию о том, что он реализует интерфейс Ping
. С помощью статических описаний нужно "поместить" реализацию интерфейса Ping
в новый компонент (например, Ping
), а экземпляр этого компонента – в сущность Server
.
Сущность Server
содержит экземпляр компонента Ping
:
Server.edl
/* Описание сущности Server. */
entity echo.Server
/* Server - именованный экземпляр компонента echo.Ping. */
components {
Server: echo.Ping
}
Компонент Ping
содержит реализацию интерфейса Ping
:
Ping.cdl
/* Описание компонента Ping. */
component echo.Ping
/* ping - реализация интерфейса Ping. */
interfaces {
ping: echo.Ping
}
Пакет Ping
содержит объявление интерфейса Ping
:
Ping.idl
/* Описание пакета Ping. */
package echo.Ping
interface {
Ping(in UInt32 value, out UInt32 result);
}
Init-описание
Чтобы сущность Client
могла вызвать метод сущности Server
, между ними требуется создать соединение (IPC-канал).
Для этого в init-описании укажите, что необходимо запустить сущности Client
и Server
, а также соединить их:
init.yaml
entities:
- name: echo.Client
connections:
- target: echo.Server
id: server_connection
- name: Server
Поскольку сущность Server
указана как - target
, она будет выступать в роли серверной сущности, т.е. принимать запросы сущности Client
и отвечать на них.
Созданный IPC-канал имеет имя server_connection
. С помощью локатора сервисов можно получить дескриптор этого канала.