2.1.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;
};
...
};