Инструкция 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> "]"]
Элементы
|
Указание направленности сообщения. Допустимые значения:
|
|
Полное имя реализации метода и необязательный список аргументов. Имена аргументов должны быть согласованы с именами из IDL-описания метода. Если метод не указан, то правило связывания применяется ко всем методам сущности . |
|
Полное имя реализации метода. Имеет следующий формат:
|
|
Имя аргумента. |
|
Имя аргумента, содержащего идентификатор контекста безопасности сущности-отправителя сообщения. Этот аргумент задается неявно и передается в каждом событии взаимодействия сущности. Имя аргумента задается произвольно. По этому имени аргумент можно передать политикам безопасности в списке аргументов. |
|
Имя аргумента, содержащего идентификатор контекста безопасности сущности-получателя сообщения. Этот аргумент задается неявно и передается в каждом событии взаимодействия сущности. Имя аргумента задается произвольно. По этому имени аргумент можно передать политикам безопасности в списке аргументов. |
|
Список политик безопасности, которые будут применены к событию. |
Пример
/* Политики, применяемые к сообщению-запросу, которое передается в методе 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 показано на примере взаимодействия двух сущностей (см. рис. ниже).

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