summaryrefslogtreecommitdiff
path: root/TAO/examples/Event_Comm/Event_Comm.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/Event_Comm/Event_Comm.idl')
-rw-r--r--TAO/examples/Event_Comm/Event_Comm.idl110
1 files changed, 110 insertions, 0 deletions
diff --git a/TAO/examples/Event_Comm/Event_Comm.idl b/TAO/examples/Event_Comm/Event_Comm.idl
new file mode 100644
index 00000000000..c0cebd339dc
--- /dev/null
+++ b/TAO/examples/Event_Comm/Event_Comm.idl
@@ -0,0 +1,110 @@
+/* -*- C++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// EventComm
+//
+// = FILENAME
+// Event_Comm.idl
+//
+// = DESCRIPTION
+// The CORBA IDL module for distributed event notification.
+//
+// = AUTHOR
+// Douglas C. Schmidt (schmidt@cs.wustl.edu) and
+// Pradeep Gore (pradeep@cs.wustl.edu)
+//
+// ============================================================================
+
+#if !defined (_EVENT_COMM_IDL)
+#define _EVENT_COMM_IDL
+
+module Event_Comm
+{
+ // = TITLE
+ // The CORBA IDL module for distributed event notification.
+
+ struct Event
+ {
+ // = TITLE
+ // Defines the interface for an event <Event>.
+ //
+ // = DESCRIPTION
+ // This is the type passed by the Notifier to the Consumer.
+ // Since it contains an <any>, it can hold any type. Naturally,
+ // the consumer must understand how to interpret this!
+
+ string tag_;
+ // Tag for the event. This is used by the <Notifier> to compare
+ // with the <Consumer>s' filtering criteria.
+
+ any value_;
+ // An event can contain anything.
+
+ Object object_ref_;
+ // Object reference for callbacks.
+ };
+
+ interface Consumer
+ {
+ // = TITLE
+ // Defines the interface for a <Consumer> of events.
+
+ void push (in Event event_instance);
+ // Inform the <Consumer> that <event> has occurred.
+
+ void disconnect (in string reason);
+ // Disconnect the <Consumer> from the <Notifier>,
+ // giving it the <reason>.
+ };
+
+ interface Notifier
+ {
+ // = TITLE
+ // Defines the interface for a <Notifier> of events.
+
+ exception CannotSubscribe
+ {
+ // = TITLE
+ // This exception in thrown when a <subscribe> fails.
+
+ string reason_;
+ };
+
+ exception CannotUnsubscribe
+ {
+ // = TITLE
+ // This exception in thrown when a <unsubscribe> fails.
+
+ string reason_;
+ };
+
+ // = The following operations are intended for Suppliers.
+
+ void disconnect (in string reason);
+ // Disconnect all the receivers, giving them the <reason>.
+
+ void push (in Event event_instance);
+ // Send the <event> to all the consumers who have subscribed and
+ // who match the filtering criteria.
+
+ // = The following operations are intended for Consumers.
+
+ void subscribe (in Consumer subscriber,
+ in string filtering_criteria) raises (CannotSubscribe);
+ // Subscribe the <Consumer> to receive events that match the
+ // regular expresssion <filtering_criteria> applied by the
+ // <Notifier>. If <filtering_criteria> is "" then all events are
+ // matched.
+
+ void unsubscribe (in Consumer unsubscriber,
+ in string filtering_criteria) raises (CannotUnsubscribe);
+ // Unsubscribe the <Consumer> that matches the filtering criteria.
+ // If <filtering_criteria> is "" then all <Consumers> with the
+ // matching object reference are removed.
+ };
+};
+
+#endif /* _EVENT_COMM_IDL */