diff options
Diffstat (limited to 'apps/Orbix-Examples/Event_Comm/include/Notifier_i.h')
-rw-r--r-- | apps/Orbix-Examples/Event_Comm/include/Notifier_i.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/apps/Orbix-Examples/Event_Comm/include/Notifier_i.h b/apps/Orbix-Examples/Event_Comm/include/Notifier_i.h new file mode 100644 index 00000000000..379f96b8097 --- /dev/null +++ b/apps/Orbix-Examples/Event_Comm/include/Notifier_i.h @@ -0,0 +1,82 @@ +/* -*- C++ -*- */ +// @(#)Notifier_i.h 1.1 10/18/96 + + +// ============================================================================ +// +// = LIBRARY +// EventComm +// +// = FILENAME +// Notifier_i.h +// +// = DESCRIPTION +// Class interface for the implementation of the <Notifier> +// +// = AUTHOR +// Douglas C. Schmidt (schmidt@cs.wustl.edu) +// +// ============================================================================ + +#if !defined (_Notifier_i_H) +#define _Notifier_i_H + +#include "ace/Map_Manager.h" +#include "ace/Synch.h" +#include "ace/SString.h" +#include "Event_Comm.hh" + +#if defined (ACE_HAS_ORBIX) + +// Forward reference. +class Notification_Receiver_Entry; + +class Notifier_i + // = TITLE + // Defines the implementation class for event <Notifiers>. + // + // = DESCRIPTION +{ +public: + enum + { + DEFAULT_SIZE = 1024 // Default max number of Event_Comm::Notification_Receivers. + }; + + Notifier_i (size_t size_hint = Notifier_i::DEFAULT_SIZE); + // Initialize a Notifier_i object with the specified size hint. + + void send_disconnect (const char *reason, + CORBA::Environment &IT_env); + // Disconnect all the receivers, giving them the <reason>. + + void send_notification (const Event_Comm::Notification ¬ification, + CORBA::Environment &IT_env); + // Send the <Notification> to all the consumers who + // have subscribed and who match the filtering criteria. + + void subscribe (Event_Comm::Notification_Receiver *notification_receiver, + const char *filtering_criteria, + CORBA::Environment &IT_env); + // Subscribe the <Notification_Receiver> to receive events that + // match <filtering_criteria> applied by the <Notifier>. + + void unsubscribe (Event_Comm::Notification_Receiver *notification_receiver, + const char *filtering_criteria, + CORBA::Environment &IT_env); + // Unsubscribe the <Notification_Receiver>. + +private: + // The following implementation should be replaced + // by a standard container class from STL... + + typedef ACE_Map_Manager <ACE_SString, Notification_Receiver_Entry *, ACE_Null_Mutex> MAP_MANAGER; + typedef ACE_Map_Iterator <ACE_SString, Notification_Receiver_Entry *, ACE_Null_Mutex> MAP_ITERATOR; + typedef ACE_Map_Entry <ACE_SString, Notification_Receiver_Entry *> MAP_ENTRY; + + MAP_MANAGER map_; + // Table that maps a <Event_Comm::Notification_Receiver *> to a <Notification_Receiver_Entry *>. +}; + +#endif /* ACE_HAS_ORBIX */ +#endif /* _Notifier_i_H */ |