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

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

В начало