Hi everybody,
as shown by the roadmap, one of the objectives is the creation of a
unique interface (management interface or MI) to replace the current
FIFO and UNIXSOCK interfaces.
Why?
The current design does not scale, neither from core point of view, nor
from modules point of view. The transport layers are currently
implemented in core, so each new type of layer implies changes of the
core. But the worst part is on the module side - as the implementations
are transport specific, for each exported function, the module needs to
implement a version for each available transport layer.
So, adding a new transport layer will imply: (1) changes in core (2)
reimplementation of all existent functions in modules for the new
transport layer.
What brings the new MI?
MI will define in core an abstract layer for both functions and data
types to be used between the external function implementations (from
modules) and the transport layers (which now will be implemented as
modules).
When a module wants to export a function for external usage, it will
just register it to the MI and it will use for implementation the data
types defined by MI. So, the exported function will be automatically
visible via all transport layer (existent or future).
Also adding a new transport layer will imply only writing a new module
which implements MI - no impact on the core or the module exporting
functions.
First version of the MI (Management interface) was uploaded on the
public CVS couple of days ago. Also there is available the first module
implementing it - the mi_fifo module implementing the FIFO interface.
Sooner will follow a module for unixsockets and later NET UDP and TCP,
HTTP, RPC, XML-RPC and so on....
Also we are in process of re-implementing the external function based on
the MI specs. So far all core functions are done and cpl-c and dialog
modules. The rest of the modules will be finished in the next week.
Any comments, opinions on the topic are welcomed.
Regards,
Bogdan