KasperskyOS Community Edition 1.0

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

Описание сущности Client

Сущность Client не реализует ни одного интерфейса, поэтому в ее EDL-описании достаточно объявить имя сущности:

Client.edl

/* Описание сущности Client. */

entity echo.Client

Описание сущности Server

Описание сущности Server должно содержать информацию о том, что он реализует интерфейс Ping. С помощью статических описаний нужно "поместить" реализацию интерфейса Ping в новый компонент (например, Ping), а экземпляр этого компонента – в сущность Server.

Сущность Server содержит экземпляр компонента Ping:

Server.edl

/* Описание сущности Server. */

entity echo.Server

/* Server - именованный экземпляр компонента echo.Ping. */

components {

Server: echo.Ping

}

Компонент Ping содержит реализацию интерфейса Ping:

Ping.cdl

/* Описание компонента Ping. */

component echo.Ping

/* ping - реализация интерфейса Ping. */

interfaces {

ping: echo.Ping

}

Пакет Ping содержит объявление интерфейса Ping:

Ping.idl

/* Описание пакета Ping. */

package echo.Ping

interface {

Ping(in UInt32 value, out UInt32 result);

}

Init-описание

Чтобы сущность Client могла вызвать метод сущности Server, между ними требуется создать соединение (IPC-канал).

Для этого в init-описании укажите, что необходимо запустить сущности Client и Server, а также соединить их:

init.yaml

entities:

- name: echo.Client

connections:

- target: echo.Server

id: server_connection

- name: Server

Поскольку сущность Server указана как - target, она будет выступать в роли серверной сущности, т.е. принимать запросы сущности Client и отвечать на них.

Созданный IPC-канал имеет имя server_connection. С помощью локатора сервисов можно получить дескриптор этого канала.