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);

        ...
    };

    ...
};