Serj Kalichev 1 year ago
parent
commit
9fcb997b42
2 changed files with 64 additions and 2 deletions
  1. 62 0
      docs/klish3.ru.md
  2. 2 2
      klish.xsd

+ 62 - 0
docs/klish3.ru.md

@@ -488,6 +488,10 @@ SEQ сам может быть элементом контейнера SWITCH.
 использование тега - внутри команды `COMMAND`. При вводе оператором
 соответствующей команды, действия, определенные в `ACTION` будут выполнены.
 
+Основным атрибутом `ACTION` является `sym`. Действие может выполнять только
+символы (функции), определенные в плугинах. Атрибут `sym` ссылается на такой
+символ.
+
 Действия могут выполняться не только командой. Далее приведен список тегов,
 внутри которых может встречаться `ACTION`:
 
@@ -545,6 +549,64 @@ SEQ сам может быть элементом контейнера SWITCH.
 символом "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
 
 

+ 2 - 2
klish.xsd

@@ -14,8 +14,8 @@
 		</xs:documentation>
 		<xs:documentation xml:lang="ru">
 		Утилита klish использует формат XML для своих конфигурационных
-		файлов. Схема позволяет проверить эти конфигурационные XML файлы
-		на правильность. Следующая команда выполнит проверку:
+		файлов. Схема позволяет проверить конфигурационные XML файлы
+		на корректность. Следующая команда выполнит проверку:
 		'xmllint --schema /path/to/klish.xsd --noout *.xml'
 		</xs:documentation>
 	</xs:annotation>