Layers
IO Ninja extends its plugin model with a new kind of plugin: the layer. This separates “heavy” and “light” plugins.
Creating a full-fledged session plugin involves quite some work. So, what if you just want to write a simple test application which would, let’s say, wait for incoming commands over TCP connection and send something in return? We already have a TCP connection plugin, should we re-implement the whole thing? Besides, what if our simple test application also needs to run over Serial, not just TCP? Wouldn’t it be better if we could write a simple piece of code which would “ride” the existing connection and just add-on desired features?
That’s what IO Ninja layers are for. A layer is a module you attach on top of existing session (which provides basic transport functionality), and the layer extends it. A layer can:
Add extra UI to perform specific operations (XModem send/receive)
Listen for incoming log messages and do something in response
Use the underlying session for data transmission
Modify log representation (for example, do alternative processing for certain log records, and fall back to the previous representer for the rest of log records)
Convert the log: produce the secondary log with “decoded” messages, thus “analyzing” the application-level protocol.
This allows writing all kinds of protocol analyzers/emulators, filters, testing programs and other useful utilities which are capable of working independently from the underlying transport.