3.15.5.2. Component Definition Example
module DiningPhilosophers
{
interface IFork
{
void pick_up () raises (ForkNotAvailable);
void release ();
};
component AFork
{
provides IFork fork;
};
eventtype PhilosopherStatus
{
public string name;
public PhilosopherState state;
public boolean has_left_fork;
public boolean has_right_fork;
};
component APhilosopher
{
attribute string name;
// Receptacles for forks
uses Fork left;
uses Fork right;
// Source for status
publishes PhilosopherStatus status;
};
component AnObserver
{
// Sink for status
consumes PhilosopherStatus status;
};
...
};