Фэндом


НАЗВАНИЕ

plumbing - правила маршрутизации сигналов протоколом plumber

ОПИСАНИЕ

Правила указывают протоколу plumber(8) маршруты, по которым нужно направить сигналы, сгенерированные приложениями с помощью сигнального модуля plumbmsg(2). Конфигурационный файл представляет из себя группы правил, разделенных пустыми строками. Каждое правило в отдельности - это набор шаблонов, содержащих инструкции, и команд plumb(1). Правила интерпретируются протоколом в порядке соответствия: применяется первое правило, шаблонам которогоудовлетворяют параметры полученного сигнала, сгенерированного каким-либо из запущенныхприложений, остальные правила даже не будут рассматриваться. Поэтому, если у вас в конфигурационном файле имеются лишние шаблоны их можно закомментировать знаком `#` в начале строки (каждой строке - один `#`). Поле аргументов внутри шаблона, содержащее целое выражение, заключается в ковычки-апострофы, например: '[a-zA-Z0-9]+\.m' (для данных, вида: fileFiLe11.m).

Все шаблоны имеют общую форму:

field verb arg

Каждое поле данных field соответствует такому же field во входящем сигнале (приложения генерят их с помощью plumbmsg(2), ведь протокол со всеми его модулями постоянно активен) и содержит набор специфических данных:

src - имя файла (исходника) приложения, сгенерировавшего сигнал
dst - порт назначения для построения маршрута
dir - рабочий каталог приложения
kind - формат передаваемых данных (например: text или image)
attr - последовательность пар атрибутов `name=value` (см. plumb(1))
data - поле данных (массив байтов)

Типы инструкций verb:

is - сравнить целиком со строкой, указанной в arg (построчно) //Exact string comparison with arg
matches - обычное сравнение с arg (побуквенное) //Regular expression comparison with arg
isdir - arg должен быть именем существующего каталога
isfile - arg должен быть именем существующего файла
set - присвоить field значение arg. Шаблон, содержащий такую инструкцию, обязательно разместите в конце правила, после других шаблонов (но перед plumb).

Параметр arg может ссылаться на одну из следующих переменных:

`$0 to $9` - Substrings resulting from the most recent regular expression match:`$0` - is the entire substring; `$1` - the first parenthesised substring, etc.
$file - последнее имя файла, которым оперировала инструкция isfile во время обработки правилом входящего сигнала
$dir - последнее имя каталога, которым оперировала инструкция isdir во время обработки правилом входящего сигнала

С полученными сигналами и их содержимым допускаются следующие действия:

plumb to port

Команда перенаправить сигнал в указанный порт (который по идее должен прослушиваться программой, которой и адресован сигнал).

plumb start command arg ...

Если указанный выше порт не прослушивается ни одной из программ, то исполнить командуcommand с параметрамиarg. При этом можно использовать значения переменных, начинающихся со знака`$`, которые были получены при проверке шаблонов правила на соответствие сигналу, и таким образом воспользоваться содержащейся в сигнале специфической информацией, подставив ее в командную строку в виде параметров. Естесственно, в командной строке переменные заменяются своими значениями.

plumb alwaysstart application


Инструкция alwaystart указывает протоколу на необходимость запуска только этого приложения для данных, удовлетворяющих правилу. //если не так, поправьте.

В завершение, рассмотрим пример: нижеприведенное правило отсылает имена модульных файлов (и находящихся в каталоге /module) - файлов с расширением `.m` - редактору файлов wm-brutus(1), запуская его, если он еще не был запущен:

kind is text

data matches '([a-zA-Z0-9]+\.m)(:[0-9]+)?'

data isfile /module/$1

data set /module/$0

plumb to edit

plumb start /dis/wm/brutus.dis $file$2

Использование $2, как аргумента команды start, позволяет передать редактору файлов brutus еще и номер строки в открываемом файле. Note plumbing

ФАЙЛ

/usr/user/lib/plumbing

Смотри также

plumb(1), plumbmsg(2), plumber(8)

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики