Binding of injected ports is done at a higher system level
(see Components). A wild-card character (*) is used to
achieve the binding of the provides port of a single instance to
all injected requires ports.
Let’s take a logging interface as an example:
interface ilog
{
...
}
component logger
{
provides ilog log;
...
}
Suppose a lot of components require logging:
...
component some_component12
{
provides some_interface12 p;
requires injected ilog l;
...
}
component some_component13 {
provides some_interface13 p;
requires injected ilog l;
...
}
...
then some system component can bind all logging in one go:
component some_system
{
...
system
{
logger clog;
...
some_component12 c12;
some_component13 c13;
...
clog.log <=> *;
}
}
It is allowed to group some components in a sub system:
component some_sub_system
{
...
system {
...
some_component12 c12;
some_component13 c13;
...
}
}
and use the wild-card binding for that sub system:
component some_system
{
...
system
{
logger clog;
some_sub_system subsys;
...
clog.log <=> subsys.*;
}
}