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