Инструкция call (<instance-policy-binding>)

Инструкция call позволяет конфигурировать события доставки сообщения-запроса и отправки сообщения-ответа при вызове определенной реализации метода сущности-сервера. Инструкция call используется в секции entity сущности-сервера.

Синтаксис

<call-policy-binding> ::=

"call" [<direction>] [<instance-method>] "="

<policy-list> ";"

<direction> ::= "in"|"out"

<instance-method> ::=

<full-method-name> ["(" <arg-name> {"," <arg-name> "}"]

["[" <src-sid> "," <dst-sid> "]"]

Элементы

<direction>

Указание направленности сообщения. Допустимые значения:

  • in – сообщение-запрос;
  • out – сообщение-ответ.

    По умолчанию используется значение in.

<instance-method>

Полное имя реализации метода и необязательный список аргументов. Имена аргументов должны быть согласованы с именами из IDL-описания метода.

Если метод не указан, то правило связывания применяется ко всем методам сущности

.

<full-method-name>

Полное имя реализации метода. Имеет следующий формат:

ЭкземплярКомпонента.ИмяРеализации.ИмяМетода

<arg-name>

Имя аргумента.

<src-sid>

Имя аргумента, содержащего идентификатор контекста безопасности сущности-отправителя сообщения. Этот аргумент задается неявно и передается в каждом событии взаимодействия сущности. Имя аргумента задается произвольно. По этому имени аргумент можно передать политикам безопасности в списке аргументов.

<dst-sid>

Имя аргумента, содержащего идентификатор контекста безопасности сущности-получателя сообщения. Этот аргумент задается неявно и передается в каждом событии взаимодействия сущности. Имя аргумента задается произвольно. По этому имени аргумент можно передать политикам безопасности в списке аргументов.

<policy-list>

Список политик безопасности, которые будут применены к событию.

Пример

/* Политики, применяемые к сообщению-запросу, которое передается в методе repo.entry.get. При принятии решения политики могут анализировать содержимое передаваемого сообщения (или его компонент). В приведенном примере политика "filter_key" ограничивает множество ключей ("key"), к которым клиент может обратиться.

*/

call in repo.entry.get (key, passwd)

= filter_key { prefix : "local-" } (key),

check_passwd (key, passwd);


/* Политики, применяемые к сообщению-ответу, возвращаемому в методе repo.entry.get. В приведенном примере политика "check_secret_info" может заблокировать отправку клиенту ответного сообщения на основе его содержимого.

*/

call out repo.entry.get (value, checksum)

= check_secret_info (value);

Конфигурирование событий с помощью инструкции call показано на примере взаимодействия двух сущностей (см. рис. ниже).

kos_sdk_securitycfg_instance

Конфигурирование событий доставки сообщения-запроса и отправки сообщения-ответа с помощью инструкции call

В начало