|
@@ -488,6 +488,10 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
использование тега - внутри команды `COMMAND`. При вводе оператором
|
|
использование тега - внутри команды `COMMAND`. При вводе оператором
|
|
соответствующей команды, действия, определенные в `ACTION` будут выполнены.
|
|
соответствующей команды, действия, определенные в `ACTION` будут выполнены.
|
|
|
|
|
|
|
|
+Основным атрибутом `ACTION` является `sym`. Действие может выполнять только
|
|
|
|
+символы (функции), определенные в плугинах. Атрибут `sym` ссылается на такой
|
|
|
|
+символ.
|
|
|
|
+
|
|
Действия могут выполняться не только командой. Далее приведен список тегов,
|
|
Действия могут выполняться не только командой. Далее приведен список тегов,
|
|
внутри которых может встречаться `ACTION`:
|
|
внутри которых может встречаться `ACTION`:
|
|
|
|
|
|
@@ -545,6 +549,64 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
символом "sym3".
|
|
символом "sym3".
|
|
|
|
|
|
|
|
|
|
|
|
+#### Атрибут `sym`
|
|
|
|
+
|
|
|
|
+Атрибут ссылается на символ (функцию) из плугина. Эта функция будет выполнена при
|
|
|
|
+выполнении `ACTION`. В качестве значения может быть указано имя символа, например
|
|
|
|
+`sym="my_sym"`. В таком случае поиск символа будет происходить по всем
|
|
|
|
+загруженным плугинам. Если указан плугин, в котором надо искать символ, например
|
|
|
|
+`sym="my_sym@my_plugin"`, то в других плугинах поиск производиться не будет.
|
|
|
|
+
|
|
|
|
+В разных ситуациях может быть выгодно использовать разные подходы, относительно
|
|
|
|
+того, указывать ли имя плугина для символа. С одной стороны, несколько плугинов
|
|
|
|
+могут содержать символы с одинаковым именем и для однозначной идентификации
|
|
|
|
+символа указание плугина будет обязательным. Кроме этого при указании плугина
|
|
|
|
+поиск символа будет проходить немного быстрее. С другой стороны, можно написать
|
|
|
|
+некие универсальные команды, в которых указываются символы без принадлежности к
|
|
|
|
+плугину. Тогда несколько плугинов могут реализовать "интерфейс", т.е. все
|
|
|
|
+используемые символы, а их реальное содержание будет зависить от того, какой
|
|
|
|
+плугин загружен.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Атрибут `lock`
|
|
|
|
+
|
|
|
|
+> Внимание: атрибут пока не реализован
|
|
|
|
+
|
|
|
|
+Некоторые действия требуют атомарности и эксклюзивного доступа к ресурсу. При
|
|
|
|
+работе в klish это не обеспечивается автоматически. Два оператора могут
|
|
|
|
+независимо, но одновременно запустить на выполнение одну и ту-же команду. Для
|
|
|
|
+обеспечения атомарности или/и эксклюзивного доступа к ресурсу могут
|
|
|
|
+использоваться блокировки `lock`. Блокировки в klish являются именованными.
|
|
|
|
+Атрибут `lock` указывает, блокировку с каким именем захватит `ACTION` при
|
|
|
|
+выполнении. Например `lock="my_lock"`, где "my_lock" - имя блокировки. Захват
|
|
|
|
+блокировки с одним именем никак не влияет на блокировки с другим именем. Таким
|
|
|
|
+образом в системе может быть реализована не одна глобальная блокировка, а
|
|
|
|
+несколько отдельных, основанных, например на том, какой именно ресурс защищает
|
|
|
|
+блокировка.
|
|
|
|
+
|
|
|
|
+Если блокировка захвачена одним процессом, то другой процесс, при попытке
|
|
|
|
+захватить ту же блокировку, приостановит свое выполнение до освобождения
|
|
|
|
+блокировки.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Атрибут `interactive`
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Атрибут `parmanent`
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Атрибут `sync`
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Атрибут `exec_on`
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Атрибут `update_retcode`
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#### Данные внутри тега
|
|
|
|
+
|
|
|
|
+
|
|
### ENTRY
|
|
### ENTRY
|
|
|
|
|
|
|
|
|