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:
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.