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