Редактирование: Alterator/module/backend

Перейти к навигации Перейти к поиску

Внимание: Вы работаете как анонимный пользователь. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
<onlyinclude>
[[Category:Sisyphus]]
 
=== Бэкенд ===
=== Бэкенд ===
Существует два вида бэкендов: нативные и внешние. Размещаются эти бэкенды в каталогах ''/usr/lib/alterator/backend2'' и ''/usr/lib/alterator/backend3'' соответственно.
Существует два вида бэкендов: нативные и внешние. Размещаются эти бэкенды в каталогах ''/usr/lib/alterator/backend2'' и ''/usr/lib/alterator/backend3'' соответственно.
Строка 14: Строка 15:


Пример простейшего бэкенда на shell:
Пример простейшего бэкенда на shell:
<source lang="bash">
<pre>#!/bin/sh -f
#!/bin/sh -f


po_domain="alterator-foo"
po_domain="alterator-foo"
Строка 42: Строка 42:
}
}


message_loop
message_loop</pre>
</source>
 
В данном примере:  
В данном примере:  
*'''message_loop''' — запуск цикла обработки событий
*'''message_loop''' — запуск цикла обработки событий
Строка 57: Строка 55:


Пример аналогичного бэкенда на perl:
Пример аналогичного бэкенда на perl:
<source lang="perl">
<pre>#!/usr/bin/perl -w
#!/usr/bin/perl -w
use strict;
use strict;
use Alterator::Backend3;
use Alterator::Backend3;
Строка 81: Строка 78:
}
}


message_loop(\&on_message);
message_loop(\&on_message);</pre>
</source>


Здесь, как и в shell-бэкенде:
Здесь, как ив shell-бэкенде:
*'''message_loop''' — запуск цикла обработки событий
*'''message_loop''' — запуск цикла обработки событий
*'''on_message''' — обработчик входящих сообщений.
*'''on_message''' — обработчик входящих сообщений.


Обработчику передаётся ссылка на хэш с входными переменными. Выходные печатаются при помощи функций ''write_*'' .   
Обработчику передается ссылка на хэш с входными переменными. Выходные печатаются при помощи функций ''write_*'' .   


При обращении из интерфейса по адресу ''/&lt;name&gt;/foo/bar'', то в бэкенде &lt;name&gt; в этом хэше будет присутствовать //_objects// равный "foo/bar" (то есть "хвост" адреса), если обращались по адресу ''/&lt;name&gt;'', то //_objects// равно "/".
При обращении из интерфейса по адресу ''/&lt;name&gt;/foo/bar'', то в бэкенде &lt;name&gt; в этом хэше будет присутствовать //_objects// равный "foo/bar" (то есть "хвост" адреса), если обращались по адресу ''/&lt;name&gt;'', то //_objects// равно "/".


Более подробная информация по написанию бэкендов на perl находится [[Alterator/perl|здесь]].
Более подробная информация по написанию бэкендов на perl находится [[Alterator/perl|здесь]].
</onlyinclude>


==== Типы параметров ====
Иногда необходимо производить валидацию введённых пользователем данных. Можно это делать в бакенде, но гораздо удобнее назначить параметрам типы. В этом случае проверка будет происходить автоматически до передачи данных в бакенд.
Делается это следующим образом. В бакенде добавляется ответ на запрос типа "type". В ответе перечисляются параметры, с которыми работает бакенд, и их типы. Для формирования правильного ответа стоит воспользоваться стандартной библиотекой, например для бакенда на shell объявление типов будет выглядить следующим образом.
<pre>
. alterator-sh-functions
on_message()
{
case "$in_action" in
  type)
    write_type_item a ipv4-address
    write_type_item b hostname
    ;;
  read)
  ...
esac
}


{{Alterator modules-nav}}
</pre>
Обратите внимание, что все добавления и изменения текста статьи рассматриваются, как выпущенные на условиях лицензии CC-BY-SA-3.0.

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Вики-разметка
Заголовки: 1-го: == ==, 2-го: === ===, 3-го: ==== ==== уровня.
Быстрая вставка: «» | [[]] [[|]] {{}} {{|}} [[Категория:]] [[altbug:]] <source lang=""></source> <pre></pre> <!-- -->.
Определения: {{man|}} {{lists|}} {{cmd|}} {{path|}} {{prg|}} {{pkg|}} {{term|}} {{span||}} {{altbug|}}
Выделение: ''italics'', '''bold''', <tt>моноширинный</tt>, <code>код</code>.
Списки: * ненумерованный список, ** вложенный список, # нумерованный список, ## вложенный нумерованный список, *# вложенный смешанный список, ;список :определений.
Verbatim: Пробел в начале строки или <pre>Явный тэг</pre>
Ссылки: [http://www.altlinux.ru/ внешние], [[Main Page|внутренние]], [http://altlinux.ru], [[Main Page]]
Шаблоны: {{Crap}} {{D}} {{Policy}} {{DraftPolicy}} {{Merge|}} {{Улучшение}} {{Тимовец|}}