summaryrefslogtreecommitdiff
path: root/CIAO/ciao/CCM_Event.idl
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/ciao/CCM_Event.idl')
-rw-r--r--CIAO/ciao/CCM_Event.idl117
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 */