This plugin is based the CORBA Component Model specification V3.0 of the OMG, described in the document 02-06-65.
Moreover, it supports basic form of parallel component as described here.
See this page for the supported feature of CCM.
See this page.
In order to actually launch a component when everything is configured, the plugin recognizes an extension to the componentinstantiation
tag of the OMG XML Component Assembly Descriptor (CAD). Here are the parameters:
fr.inria.padico
behavior
go
When such a tag is found, the void go(void)
operation is called asynchronously on component instances (in case of a cardinality greater than 1). The value can also be start
, in this case the void start(void)
operation is called oneway (i.e returns immediately) on component instances.
Example of a CAD file:
... <homeplacement cardinality="1" id="master_hp_id"> <componentfileref idref="master_t"/> <componentinstantiation id="master_i"> <extension class="behavior" origin="fr.inria.padico">go</extension> </componentinstantiation> </homeplacement> ...
When many instances of the same component are launched (with a large cardinality), it may be useful
to distinguish the instances. Hence, the componentinstantiation
supports an extension to automatically set an
attribute (of type long) with the rank number of a component.
fr.inria.padico
configuration
For example, the following XML code will lead to have:
the_attribute_name
been set to 0the_attribute_name
been set to 1the_attribute_name
been set to 9... <homeplacement cardinality="10" id="worker_hp_id"> <componentfileref idref="worker_t"/> <componentinstantiation id="worker_i"> <extension class="configuration" origin="fr.inria.padico">the_attribute_name</extension> </componentinstantiation> </homeplacement> ...
It may append that there are some incompatibilities between component to deploy. Hence, there are some extensions that enable to express such constraints. Note that this set of constrains can be easily extended: send an email asking for it.
This extension enable to list component implementation that are incompatible with this implementation on a same node:
fr.inria.padico.placement.separate
class:component
all
: this implementation conflicts with all other implementation, including itself. Hence, this implementation will require to be alone.self
: this implementation conflicts with itself. Hence, two instances of this implementation can not be on the same node.an implementation id
: this implementation conflicts with the given implementation id, potentially of another component (beware: it breaks component independence!)Example:
... <implementation id="impl_id"> <code type="Executable"> <fileinarchive name="..."/> </ code> <extension class="component" origin="fr.inria.padico.placement.separate">all</extension> </implementation> ...
This plugin recognizes some specific control parameters.
component_server
: specifies the location of a CSD file describing a NameService implementation.naming_service
: specifies the location of a CSD file describing a Component Server implementation.Example: ADAGE control parameter file:
<?xml version='1.0'?> <!DOCTYPE ctrl_params> <ctrl_params xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/ctrl_params.xsd"> ... <plugins> <plugin name="CCM" file="/path/to/ctrl-ccm.xml"/> </plugins> ... </ctrl_params>
CCM plugin control parameter file:
<?xml version='1.0'?> <!DOCTYPE ctrl_params_ccm> <ctrl_params_ccm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../src/plugin/ccm/ctrl_params_ccm.xsd"> <component_server>/path/to/CSD/ComponentService.csd</component_server> <naming_service use_it="yes">/path/to/CSD/NamingService.csd</naming_service> </ctrl_params_ccm>