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
Hi Juha,
I just committed changes on that two modules today :). First step will be to maintain the same functionality via the new interface, which means finish porting all functions from the modules and a module for unixsocks.
After that, new transport layers will be added..
regards, bogdan
Juha Heinanen wrote:
Bogdan-Andrei Iancu writes:
Any comments, opinions on the topic are welcomed.
this abstract layer is a great thing to have. i could try to help porting "my" modules to this new interface (lcr, domain). i'm personally most interested in xml-rpc transport.
-- juha