diff options
Diffstat (limited to 'CIAO/ciao/CCM_Event.idl')
-rw-r--r-- | CIAO/ciao/CCM_Event.idl | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/CIAO/ciao/CCM_Event.idl b/CIAO/ciao/CCM_Event.idl new file mode 100644 index 00000000000..f6a4755f8f1 --- /dev/null +++ b/CIAO/ciao/CCM_Event.idl @@ -0,0 +1,117 @@ +// $Id$ + +/** + * @@ Compile this file with: + * + * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \ + * -Wb,export_macro=CIAO_Export \ + * -Wb,export_include=CIAO_export.h \ + * -Wb,pre_include="ace/pre.h" \ + * -Wb,post_include="ace/post.h" \ + * CCM_Event.idl + */ + +//#define CIAO_HAS_IMPORT_KEYWORD + +#if !defined (CCM_EVENT_IDL) +#define CCM_EVENT_IDL + +#include "CCM_Base.idl" + +module Components +{ + typeprefix Components "omg.org"; + + abstract valuetype EventBase {}; + + interface EventConsumerBase + { + void push_event (in EventBase evt) raises (BadEventType); + + // CIAO-specific operation to treat event service as regular event + // sink port. The source_id needs to be passed in to identify the + // source of the publisher port to support event filtering mechanism. + void ciao_push_event (in Components::EventBase evt, + in string source_id, + in CORBA::TypeCode tc) + raises (BadEventType); + + // CIAO-specific operation to help support the capability + // to subscribe to eventtypes more derived than the type + // consumed. + boolean ciao_is_substitutable (in string event_repo_id); + }; + + valuetype ConsumerDescription : PortDescription + { + public EventConsumerBase consumer; + }; + typedef sequence<ConsumerDescription> ConsumerDescriptions; + + valuetype EmitterDescription : PortDescription + { + public EventConsumerBase consumer; + }; + typedef sequence<EmitterDescription> EmitterDescriptions; + + valuetype SubscriberDescription + { + public Cookie ck; + public EventConsumerBase consumer; + }; + typedef sequence<SubscriberDescription> SubscriberDescriptions; + + valuetype PublisherDescription : PortDescription + { + public SubscriberDescriptions consumer; + }; + typedef sequence<PublisherDescription> PublisherDescriptions; + + interface Events + { + EventConsumerBase get_consumer (in FeatureName sink_name) + raises (InvalidName); + + /** + * @todo Mismatch with 06-04-01, AlreadyConnected is not listed in the + * spec with this operation + */ + Cookie subscribe (in FeatureName publisher_name, + in EventConsumerBase subscriber) + raises (InvalidName, + AlreadyConnected, + InvalidConnection, + ExceededConnectionLimit); + + EventConsumerBase unsubscribe (in FeatureName publisher_name, + in Cookie ck) + raises (InvalidName, + InvalidConnection); + + void connect_consumer (in FeatureName emitter_name, + in EventConsumerBase consumer) + raises (InvalidName, + AlreadyConnected, + InvalidConnection); + + EventConsumerBase disconnect_consumer (in FeatureName source_name) + raises (InvalidName, + NoConnection); + + ConsumerDescriptions get_all_consumers (); + + ConsumerDescriptions get_named_consumers (in NameList names) + raises (InvalidName); + + EmitterDescriptions get_all_emitters (); + + EmitterDescriptions get_named_emitters (in NameList names) + raises (InvalidName); + + PublisherDescriptions get_all_publishers (); + + PublisherDescriptions get_named_publishers (in NameList names) + raises (InvalidName); + }; +}; +#endif /* CCM_EVENT_IDL */ |