Вход:  Пароль:  
FreeSource: Мусорка/AltLinux?/Sisyphus?/Alterator?/backend3 ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Внешние бакенды


Внешние бакенды могут быть написаны на произвольном языке, отвечают через стандартный вывод, выводя туда те же самые s-выражения, которые выводил бы нативный бакенд?. По большоему счёту отличие состоит только в приёме сообщений и местом жительства – располагаются они в каталоге /usr/lib/alterator/backend3.


Внешний бакенд находится в вечном цикле приёма сообщений.
Каждое сообщение приходит на стандартный ввод как серия строк.
Начинается сообщение со строки “_message:begin”. Завершается – “_message:end”. Стоит дождаться окончания сообщения и не обрабатывать его сходу – может так случиться, что alterator на половине подачи сообщения скончается по необъяснимым причинам.
Между “_message” идёт тело сообщение. На каждой строке передаётся аттрибут и его значение в формате: "аттрибут:значение". Соответственно аттрибут не может содержать символа “:". И кроме того аттрибуты _message и _objects считаются зарезервированными.


Note: Кроме того ознакомьтесь? с общими ограничениями на имена объектов и передаваемых параметров


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


Обрабатываемые объекты передаются вместе со специальным атттрибутом _objects. Объекты перечислены через символ «/» точно также как они были бы в woo-команде за небольшим исключением, что откушен корневой объект. Если предметом вызова является сам корневой объект, то передаётся один символ «/».
Например команде «/users» соответствует значение аттрибута _objects «/». А команде «/users/test/aaa» – «test/aaa». Обратите внимание на отсутствие «/» в начале сообщения.


Таким образом внешний бакенд также как и нативный:

Бакенд на shell


Если внешний бакенд пишется на shell, то для удобства их написания предлагается небольшая библиотечка готовых функций. С её использованием, написание бакенда превращается в интересную игру:


Функция on_message вызывается при каждом входящем сообщении. Переданные параметры превращаются в переменные shell, едиственное отличие к их имени добавляется префикс in_. Например action соответствует переменная $in_action.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]