Описание сущности Client
Сущность Client
не реализует ни одного интерфейса, поэтому в EDL-описании достаточно объявить имя сущности.
Client.edl
/* Описание сущности Client. */
entity Client
Описание сущности Server
Сущность Server
реализует интерфейс Ping
, содержащий два метода – Ping
и Pong
. Как и в примере echo, требуется объявить отдельный компонент (например Ping
)
, содержащий реализацию интерфейса Ping
.
В EDL-описании сущности server
необходимо указать, что она содержит экземпляр компонента Ping
:
Server.edl
/* Описание сущности Server. */
entity Server
/* pingComp - именованный экземпляр компонента Ping. */
components {
pingComp: Ping
}
В CDL-описании компонента Ping
необходимо указать, что он содержит реализацию интерфейса Ping
:
Ping.cdl
/* Описание компонента Ping. */
component Ping
/* pingImpl - реализация интерфейса Ping. */
interfaces {
pingImpl: Ping
}
В пакете Ping
необходимо объявить интерфейс Ping
, содержащий два метода – Ping
и Pong
:
Ping.idl
/* Описание пакета Ping. */
package Ping
interface {
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
. С помощью локатора сервисов можно получить дескриптор этого канала.