Описание сущности client
Сущность client
не реализует ни одного интерфейса, поэтому в ее edl-описании достаточно объявить имя сущности:
client.edl
/* Описание сущности client. */
entity client
Описание сущности server
Описание сущности server
должно содержать информацию о том, что он реализует интерфейс IPing
. С помощью статических описаний нужно «поместить» реализацию интерфейса IPing
в новый компонент (например, ping
), а экземпляр этого компонента – в сущность server
.
Сущность server
содержит экземпляр компонента ping
:
server.edl
/* Описание сущности server. */
entity server
/* ping_comp - именованный экземпляр компонента ping. */
ping_comp: ping
Компонент ping
содержит реализацию интерфейса IPing
:
ping.cdl
/* Описание компонента ping. */
component ping
/* ping_impl - реализация интерфейса IPing, объявленного в пакете ping. */
ping_impl: ping.IPing
Пакет ping
содержит объявление интерфейса IPing
:
ping.idl
/* Описание пакета ping. */
package ping
interface IPing {
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
. С помощью локатора сервисов можно получить дескриптор этого канала.