Файлы описаний

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

В начало