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