идемпотентный атрибут
Атрибут [idempotent] указывает, что операция не изменяет сведения о состоянии и возвращает одни и те же результаты при каждом выполнении. Выполнение подпрограммы более одного раза имеет тот же эффект, что и однократное выполнение.
[
interface-attribute-list
]
interface interface-name
{
[idempotent [, attribute-list]] returntype function-name(params)
}
-
interface-attribute-list
-
Задает список из нуля или нескольких атрибутов IDL, которые применяются к интерфейсу в целом. При наличии двух или более атрибутов интерфейса они должны быть разделены запятыми.
-
interface-name
-
Указывает имя интерфейса.
-
список атрибутов
-
Указывает дополнительные атрибуты, применяемые к функции. Разделяйте несколько атрибутов запятыми.
-
Returntype
-
Указывает тип возвращаемого значения функции.
-
function-name
-
Указывает имя функции, к которой будет применен атрибут [idempotent] .
-
params
-
Список параметров функции.
RPC поддерживает два типа семантики удаленных вызовов: вызовы операций с атрибутом [идемпотентный] и вызовы операций (идемпотентных операций) без атрибута [идемпотентные] (неидемпотентные операции). Идемпотентная операция может быть проведена более одного раза без плохого эффекта. И наоборот, неидемпотентная операция не может быть выполнена более одного раза, так как она будет возвращать разные результаты каждый раз или потому, что изменяет некоторое состояние.
Чтобы убедиться, что процедура автоматически выполняется повторно, если вызов не завершается, используйте атрибут [идемпотентный] . Если атрибуты [идемпотентные], [широковещательные] или [возможно] отсутствуют, процедура будет использовать неидемпотентную семантику по умолчанию. В этом случае операция выполняется только один раз.