Перейти к основному содержимому

Агенты

Процесс и запись

Агент — две вещи сразу: процесс на машине пользователя и ресурс — запись, связывающая реальную машину с этим процессом. Объявление агента не создаёт машину: запись ждёт, пока её агент подключится. Машина не открывает портов; агент подключается наружу, со своим токеном.

Как агент попадает на машину — два равноправных пути, сходящихся в одно подключение:

Оба пути выполняют один и тот же скрипт установки — два скрипта разъехались бы.

Возможности записываются, не обнаруживаются

Что машина УМЕЕТ — записано на её записи публикатором: установщиком, человеком, образом машины. У возможности есть имя, метки, информативная версия и признак готовности. Она принадлежит машине, а не тому, кто её опубликовал:

Готовность — одна формула

Готовность агента — два условия сразу: агент подключён, и каждое требование объявления выполнено — нужная возможность есть на записи, готова и проходит по меткам. Ready на хэндле агента ждёт оба условия: отказ приходит до отправки работы на машину, а не после её падения.

Требования матчатся с возможностями по имени плюс ограничениям на метки — равенство и «одно из». Версии никогда не сравниваются.

Выборка и веер

Агентов можно выбирать, не зная имён: селектор по меткам и требованиям возвращает снапшот подходящих агентов; действие, адресованное набору, выполняется на каждой машине набора.

Чужие агенты

Агента, объявленного не вами, можно присоединить: распознать и читать как любой хэндл, никогда — создать. Присоединённый агент принимает действия как свой; единственная разница — он не может быть родителем или ребёнком в дереве владения.