Layers

Layers
Требуется:
 com.ioninja.layer
Статус:
 ВКЛЮЧЕНО (все требования выполнены)

IO Ninja имеет два вида плагинов — сеансы и слои. Вся идея здесь заключается в том, чтобы разделить тяжелые и легкие плагины.


Создание полноценного сессионного плагина требует довольно большой работы. По крайней мере, вам необходимо создать транспортные объекты, создать пользовательский интерфейс для конкретного транспорта, определить записи журнала для конкретного транспорта, обработать события пользовательского интерфейса (и в ответ выполнить определенные операции ввода-вывода) и, наконец, обработать события ввода-вывода (и в ответ записать данные в журнал и обновить пользовательский интерфейс). Звучит устрашающе, не так ли?


Итак, что, если вы просто хотите написать простое тестовое приложение, которое, скажем, будет ждать входящих команд по TCP-соединению и отправлять что-то взамен? У нас уже есть плагин TCP-соединения, должны ли мы заново реализовать все это? Кроме того, что, если наше простое тестовое приложение также должно выполняться по последовательному, а не только по TCP? Не было бы лучше, если бы мы могли написать простой фрагмент кода, который повторно использовал бы существующее соединение и просто добавил нужные функции?


Вот для чего нужны слои IO Ninja.


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



  • Add custom UI для выполнения операций, зависящих от уровня (например, отправка и получение XModem);
  • Listen for log records — и сделайте что-нибудь в ответ;
  • Transmit data путем перехода к базовому сеансу;
  • Filter the log — скрывать нежелательные записи в соответствии с некоторой пользовательской логикой;
  • Convert the log — создание вторичного журнала с декодированными сообщениями, таким образом анализируя протокол прикладного уровня (например, Modbus)


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