Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/module/backend ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Бакенд

Существует два вида бакендов: нативные и внешние. Размещаются эти бакенды в каталогах /usr/lib/alterator/backend2 и /usr/lib/alterator/backend3 соответственно.


Нативные бакенды пишутся только на языке scheme и работают внутри процесса alterator. Написание нативных бакендов требует достаточно большого опыта программирования и большой аккуратности.


Внешний бакенд может быть написан на произвольном языке програмирования, при этом настоятельно рекомендуется использовать готовые библиотеки, предоставляющие API для взаимодействия с alterator. Все библиотеки построены по одному и тому же принципу – есть главный цикл взаимодействующий с alterator и есть функция-обработчик пришедших сообщений.
В функции обработчике:

Простейший бакенд на shell


Пример простейшего бакенда на shell:

В данном примере: message_loop — запуск цикла обработки событий, on_message — обработчик входящих сообщний. Входные переменные выглядят как переменные $in_<имя>. Выходные печатаются при помощи функций write_* . alterator_api_version – текущая версия API для взаимодействия с alterator. Если к к бакенду <name> обращались из интерфейса по адресу /<name>/foo/bar, то переменная $in__objects будет равна «foo/bar» (то есть «хвост» адреса), если обращались по адресу /<name>, то $in__objects будет равна «/».

Простейший бакенд на perl


Пример аналогичного бакенда на perl (см. также здесь):


Здесь, как ив shell-бакенде message_loop — запуск цикла обработки событий, on_message — обработчик входящих сообщний. Обработчику передается ссылка на хэш с входными перемеными. Выходные печатаются при помощи функций write_*. При обращении из интерфейса по адресу /<name>/foo/bar, то в бакенде <name> в этом хэше будет присутствовать _objects="foo/bar" (то есть «хвост» адреса), если обращались по адресу /<name>, то _objects="/".


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