Файлы описаний в примере ping

Описание сущности 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. С помощью локатора сервисов можно получить дескриптор этого канала.

В начало