Пример ping включает в себя две сущности: client и server.
Сущность server предоставляет два идентичных метода Ping и Pong, которые получают число и возвращают измененное число:
Ping(in UInt32 value, out UInt32 result);
Pong(in UInt32 value, out UInt32 result);
Сущность client вызывает оба этих метода в различной последовательности и/или в различные моменты времени. Если вызов метода запрещен конфигурацией безопасности, выводится сообщение Failed to call...
Транспортная часть примера ping практически аналогична таковой для примера echo. Единственное отличие состоит в том, что в примере ping используется два метода (Ping и Pong), а не один.
Поскольку использование IPC-транспорта подробно рассмотрено в комментариях к примеру echo, в примере ping оно рассматривается кратко.
Использование разных конфигураций безопасности
Пример ping позволяет использовать различные конфигурации безопасности для контроля взаимодействия между сущностями client и server. Вызовы функций ping() и pong() вынесены в функцию test(), реализация которой содержится файле test.c. Поэтому для демонстрации другой конфигурации безопасности не нужно менять код client.c – достаточно поправить (или заменить) test.c.
В составе примера ping есть конфигурации безопасности (security.cfg) на базе семейств flow и era, а также файлы test.c для этих конфигураций.
Состав примера ping
Пример ping состоит из следующих файлов:
client.cclient.edlserver.cserver.edl, ping.cdl, ping.idlinit.yamlsecurity.cfg (для семейства flow или era)test.c (для семейства flow или era)ping.era (только для семейства era)