2.1.5.4. Assembly Interfaces
uses AnInterface AReceptacle;
consumes AnEvent ASink;
void connect_AReceptacle (in AnInterface connection)
raises (AlreadyConnected, InvalidConnection);
AnInterface disconnect_AReceptacle ()
raises (NoConnection);
AnInterface get_connection_AReceptacle ();
AnEventConsumer get_consumer_ASink ();
module Components {
...
interface Receptacles {
Cookie connect (in FeatureName name, in Object connection)
raises (InvalidName, InvalidConnection, AlreadyConnected, ExceededConnectionLimit);
Object disconnect (in FeatureName name, in Cookie ck)
raises (InvalidName, InvalidConnection, CookieRequired, NoConnection);
ConnectionDescriptions get_connections (in FeatureName name)
raises (InvalidName);
...
};
...
valuetype Cookie {
private CORBA::OctetSeq cookieValue;
};
valuetype SubscriberDescription {
public Cookie ck;
public EventConsumerBase consumer;
};
typedef sequence<SubscriberDescription> SubscriberDescriptions;
interface Events {
void connect_consumer (in FeatureName emitter_name, in EventConsumerBase consumer)
raises (InvalidName, AlreadyConnected, InvalidConnection);
EventConsumerBase disconnect_consumer (in FeatureName source_name)
raises (InvalidName, NoConnection);
EventConsumerBase get_consumer (in FeatureName sink_name) raises (InvalidName);
Cookie subscribe (in FeatureName publisher_name, in EventConsumerBase subscriber)
raises (InvalidName, InvalidConnection, ExceededConnectionLimit);
EventConsumerBase unsubscribe (in FeatureName publisher_name, in Cookie ck)
raises (InvalidName, InvalidConnection);
...
};
...
};