#include <Event_Map_T.h>
Collaboration diagram for TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >:
Public Types | |
typedef TAO_Notify_Event_Map_Entry_T< PROXY > | ENTRY |
Public Member Functions | |
TAO_Notify_Event_Map_T (void) | |
Constuctor. | |
~TAO_Notify_Event_Map_T () | |
Destructor. | |
void | init () |
Init. | |
void | connect (PROXY *proxy) |
Connect a PROXY. | |
void | disconnect (PROXY *proxy) |
Disconnect a PROXY. | |
int | insert (PROXY *proxy, const TAO_Notify_EventType &event_type) |
int | remove (PROXY *proxy, const TAO_Notify_EventType &event_type) |
ENTRY * | find (const TAO_Notify_EventType &event_type) |
ACE_TYPENAME ENTRY::COLLECTION * | broadcast_collection (void) |
Find the default broadcast list. | |
ACE_TYPENAME ENTRY::COLLECTION * | updates_collection (void) |
Find the update list. This is all the PROXYS connected to this Map. | |
void | release (ENTRY *entry) |
Release the usage count on this entry. | |
const TAO_Notify_EventTypeSeq & | event_types (void) |
Access all the event types available. | |
int | proxy_count (void) |
Access number of proxys connected in all. | |
Protected Attributes | |
ACE_Hash_Map_Manager< TAO_Notify_EventType, ENTRY *, ACE_SYNCH_NULL_MUTEX > | map_ |
The Map that stores eventtype to entry mapping. | |
ACE_LOCK | lock_ |
The lock to use. | |
int | proxy_count_ |
Count of proxys connected. | |
ENTRY | broadcast_entry_ |
The default broadcast list for EventType::special. | |
ENTRY | updates_entry_ |
Update Entry - Keeps a list of all PROXY's connected to this Map. Updates are send to this list. | |
TAO_Notify_EventTypeSeq | event_types_ |
The event types that are available in this map. |
Definition at line 38 of file Event_Map_T.h.
|
Definition at line 42 of file Event_Map_T.h. |
|
Constuctor.
Definition at line 19 of file Event_Map_T.cpp.
00020 :proxy_count_ (0) 00021 { 00022 00023 } |
|
Destructor.
Definition at line 26 of file Event_Map_T.cpp.
00027 { 00028 } |
|
Find the default broadcast list.
Definition at line 33 of file Event_Map_T.inl. References TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::broadcast_entry_.
00034 { 00035 return this->broadcast_entry_.collection (); 00036 } |
|
Connect a PROXY.
Definition at line 40 of file Event_Map_T.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_WRITE_GUARD, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::proxy_count_, and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_entry_. Referenced by TAO_Notify_Event_Manager::connect().
00041 { 00042 this->updates_entry_.connected (proxy ACE_ENV_ARG_PARAMETER); 00043 ACE_CHECK; 00044 00045 ACE_WRITE_GUARD (ACE_LOCK, ace_mon, this->lock_); 00046 ++this->proxy_count_; 00047 } |
|
Disconnect a PROXY.
Definition at line 50 of file Event_Map_T.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_WRITE_GUARD, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::proxy_count_, and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_entry_. Referenced by TAO_Notify_Event_Manager::disconnect().
00051 { 00052 this->updates_entry_.disconnected (proxy ACE_ENV_ARG_PARAMETER); 00053 ACE_CHECK; 00054 00055 ACE_WRITE_GUARD (ACE_LOCK, ace_mon, this->lock_); 00056 --this->proxy_count_; 00057 } |
|
Access all the event types available.
Definition at line 51 of file Event_Map_T.inl. References TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::event_types_.
00052 { 00053 return this->event_types_; 00054 } |
|
Find the collection mapped to the The usage_count on the entry returned is incremented. |
|
Init.
Definition at line 31 of file Event_Map_T.cpp. References ACE_CHECK, ACE_ENV_SINGLE_ARG_PARAMETER, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::broadcast_entry_, and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_entry_.
00032 { 00033 this->broadcast_entry_.init (ACE_ENV_SINGLE_ARG_PARAMETER); 00034 ACE_CHECK; 00035 00036 this->updates_entry_.init (ACE_ENV_SINGLE_ARG_PARAMETER); 00037 } |
|
Associate PROXY and event_type. Returns 1 if is being seem for the 1st time otherwise returns 0. Returns -1 on error. Definition at line 60 of file Event_Map_T.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_NEW_THROW_EX, ACE_READ_GUARD_RETURN, ACE_THROW_RETURN, ACE_WRITE_GUARD_RETURN, ACE_Hash_Map_Manager_Ex< TAO_Notify_EventType, ENTRY *, ACE_Hash< TAO_Notify_EventType >, ACE_Equal_To< TAO_Notify_EventType >, ACE_SYNCH_NULL_MUTEX >::bind(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::broadcast_entry_, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::event_types_, ACE_Hash_Map_Manager_Ex< TAO_Notify_EventType, ENTRY *, ACE_Hash< TAO_Notify_EventType >, ACE_Equal_To< TAO_Notify_EventType >, ACE_SYNCH_NULL_MUTEX >::find(), and ACE_Unbounded_Set< TAO_Notify_EventType >::insert(). Referenced by TAO_Notify_Event_Manager::publish().
00061 { 00062 ENTRY* entry; 00063 00064 int result = -1; 00065 00066 if (event_type.is_special () == 1) 00067 { 00068 entry = &this->broadcast_entry_; 00069 00070 result = 0; 00071 } 00072 else 00073 { 00074 ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); 00075 00076 result = this->map_.find (event_type, entry); 00077 } 00078 00079 if (result == -1) // This type is being seen for the first time. 00080 { 00081 ACE_NEW_THROW_EX (entry, 00082 ENTRY (), 00083 CORBA::NO_MEMORY ()); 00084 ACE_CHECK_RETURN (-1); 00085 00086 entry->init (ACE_ENV_SINGLE_ARG_PARAMETER); 00087 ACE_CHECK_RETURN (-1); 00088 00089 entry->connected (proxy ACE_ENV_ARG_PARAMETER); 00090 ACE_CHECK_RETURN (-1); 00091 00092 ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); 00093 00094 if (map_.bind (event_type, entry) == -1) 00095 ACE_THROW_RETURN (CORBA::NO_MEMORY (), -1); 00096 00097 if (this->event_types_.insert (event_type) == -1) 00098 return -1; 00099 00100 return 1; 00101 } 00102 else // Add to existing entry or the broadcast entry. 00103 { 00104 entry->connected (proxy ACE_ENV_ARG_PARAMETER); 00105 ACE_CHECK_RETURN (-1); 00106 } 00107 00108 return 0; 00109 } |
|
Access number of proxys connected in all.
Definition at line 45 of file Event_Map_T.inl. References TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::proxy_count_. Referenced by TAO_Notify_Event_Manager::~TAO_Notify_Event_Manager().
00046 { 00047 return this->proxy_count_; 00048 } |
|
Release the usage count on this entry.
Definition at line 24 of file Event_Map_T.inl. References ACE_WRITE_GUARD.
00025 { 00026 ACE_WRITE_GUARD (ACE_LOCK, ace_mon, this->lock_); 00027 00028 if (entry->_decr_refcnt () == 0) 00029 delete entry; 00030 } |
|
Remove association of PROXY and event_type. Returns 1 if is being seem for the last time otherwise returns 0. Returns -1 on error. Exec a strategy for removing entries. Strategy 1: remove_immediately Strategy 2: remove a bunch_after crossing a threshold Strategy 3: use cached allocator and 1 Definition at line 112 of file Event_Map_T.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_READ_GUARD_RETURN, ACE_WRITE_GUARD_RETURN, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::broadcast_entry_, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::event_types_, ACE_Hash_Map_Manager_Ex< TAO_Notify_EventType, ENTRY *, ACE_Hash< TAO_Notify_EventType >, ACE_Equal_To< TAO_Notify_EventType >, ACE_SYNCH_NULL_MUTEX >::find(), ACE_Unbounded_Set< TAO_Notify_EventType >::remove(), and ACE_Hash_Map_Manager_Ex< TAO_Notify_EventType, ENTRY *, ACE_Hash< TAO_Notify_EventType >, ACE_Equal_To< TAO_Notify_EventType >, ACE_SYNCH_NULL_MUTEX >::unbind(). Referenced by TAO_Notify_Event_Manager::un_publish().
00113 { 00114 ENTRY* entry = 0; 00115 00116 if (event_type.is_special () == 1) 00117 { 00118 entry = &this->broadcast_entry_; 00119 00120 entry->disconnected (proxy ACE_ENV_ARG_PARAMETER); 00121 ACE_CHECK_RETURN (-1); 00122 } 00123 else 00124 { 00125 int result = -1; 00126 00127 { 00128 ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); 00129 00130 result = this->map_.find (event_type, entry); 00131 } 00132 00133 if (result == 0) 00134 { 00135 entry->disconnected (proxy ACE_ENV_ARG_PARAMETER); 00136 ACE_CHECK_RETURN (-1); 00137 00138 if (entry->count () == 0) 00139 { 00140 /// Exec a strategy for removing entries. 00141 /// Strategy 1: remove_immediately 00142 /// Strategy 2: remove a bunch_after crossing a threshold 00143 /// Strategy 3: use cached allocator and 1 00144 00145 // Strategy 1: 00146 ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); 00147 00148 this->map_.unbind (event_type); 00149 00150 if (entry->_decr_refcnt () == 0) 00151 delete entry; 00152 00153 if (this->event_types_.remove (event_type) == -1) 00154 return -1; 00155 00156 return 1; 00157 } 00158 } 00159 } 00160 00161 return 0; 00162 } |
|
Find the update list. This is all the PROXYS connected to this Map.
Definition at line 39 of file Event_Map_T.inl. References TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_entry_. Referenced by TAO_Notify_Event_Manager::subscription_change().
00040 { 00041 return this->updates_entry_.collection (); 00042 } |
|
The default broadcast list for EventType::special.
Definition at line 99 of file Event_Map_T.h. Referenced by TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::broadcast_collection(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::init(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::insert(), and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::remove(). |
|
The event types that are available in this map.
Definition at line 105 of file Event_Map_T.h. Referenced by TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::event_types(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::insert(), and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::remove(). |
|
The lock to use.
Definition at line 93 of file Event_Map_T.h. |
|
The Map that stores eventtype to entry mapping.
Definition at line 90 of file Event_Map_T.h. |
|
Count of proxys connected.
Definition at line 96 of file Event_Map_T.h. Referenced by TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::connect(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::disconnect(), and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::proxy_count(). |
|
Update Entry - Keeps a list of all PROXY's connected to this Map. Updates are send to this list.
Definition at line 102 of file Event_Map_T.h. Referenced by TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::connect(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::disconnect(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::init(), and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_collection(). |