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, testing programs and other useful utilities which are capable of working independently from the underlying transport.