// base file for the UCM programming model module ucm { struct Property { string name; string value; }; typedef sequence < Property > Properties; typedef long componentId; typedef sequence < componentId > componentIds; typedef long connectionId; exception NOT_FOUND { }; exception BAD_PARAMETER { }; exception UCM_ERROR { }; interface PortElementObject { }; typedef sequence < PortElementObject > PortElementObjects; struct PortConnection { string from_port; PortElementObjects to_port; }; typedef sequence < PortConnection > PortConnections; interface ComponentObject { void on_init (); void on_remove (); void on_startup (in PortConnections dependencies); void on_shutdown (); PortElementObject get_portElement (in string provided); }; interface Container; interface FragmentObject { void set_container_interface (in Container container); }; interface Connectable { void on_connect (in string port_name, in PortElementObject required); void on_disconnect (in string port_name); }; interface Container { componentId add_component (in Properties configValues) raises (UCM_ERROR); void remove_component (in componentId comp_instance) raises (NOT_FOUND, UCM_ERROR); PortElementObject get_port_element (in componentId comp_instance, in string port_name) raises (NOT_FOUND, UCM_ERROR); connectionId connect (in componentId instance, in string port_name, in PortElementObject to_port) raises (NOT_FOUND, BAD_PARAMETER, UCM_ERROR); void disconnect (in connectionId connection) raises (NOT_FOUND, UCM_ERROR); void start () raises (UCM_ERROR); void stop () raises (UCM_ERROR); componentIds get_components () raises (UCM_ERROR); }; interface ContainerManager:Container { Container create_container (in Properties configValues) raises (UCM_ERROR); void remove_container (in Container subContainer) raises (NOT_FOUND, UCM_ERROR); void destroy () raises (UCM_ERROR); }; }; // end of module ucm