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.