#include <Event_Manager.h>
Inheritance diagram for TAO_Notify_Event_Manager:
Public Types | |
typedef TAO_Notify_Refcountable_Guard_T< TAO_Notify_Event_Manager > | Ptr |
Public Member Functions | |
TAO_Notify_Event_Manager (void) | |
Constuctor. | |
virtual | ~TAO_Notify_Event_Manager () |
Destructor. | |
void | release () |
The release method is called when the refcount reaches 0. | |
void | init (void) |
Init. | |
void | shutdown (void) |
Init. | |
void | connect (TAO_Notify_ProxySupplier *proxy_supplier) |
Connect ProxySupplier. | |
void | disconnect (TAO_Notify_ProxySupplier *proxy_supplier) |
Disconnect ProxySupplier. | |
void | connect (TAO_Notify_ProxyConsumer *proxy_consumer) |
Connect ProxyConsumer. | |
void | disconnect (TAO_Notify_ProxyConsumer *proxy_consumer) |
Disconnect ProxyConsumer. | |
TAO_Notify_Consumer_Map & | consumer_map (void) |
Map accessors. | |
TAO_Notify_Supplier_Map & | supplier_map (void) |
void | offer_change (TAO_Notify_ProxyConsumer *proxy_consumer, const TAO_Notify_EventTypeSeq &added, const TAO_Notify_EventTypeSeq &removed) |
Offer change received on . | |
void | subscription_change (TAO_Notify_ProxySupplier *proxy_supplier, const TAO_Notify_EventTypeSeq &added, const TAO_Notify_EventTypeSeq &removed) |
Subscription change received on . | |
const TAO_Notify_EventTypeSeq & | offered_types (void) const |
What are the types being offered. | |
const TAO_Notify_EventTypeSeq & | subscription_types (void) const |
What are the types being subscribed. | |
Protected Member Functions | |
void | subscribe (TAO_Notify_ProxySupplier *proxy_supplier, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &new_seq) |
Subscribe to the event type sequence list . | |
void | un_subscribe (TAO_Notify_ProxySupplier *proxy_supplier, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &last_seq) |
Unsubscribe to the event type sequence list . | |
void | publish (TAO_Notify_ProxyConsumer *proxy_consumer, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &new_seq) |
Subscribe to the event type sequence list . | |
void | un_publish (TAO_Notify_ProxyConsumer *proxy_consumer, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &last_seq) |
Subscribe to the event type sequence list . | |
Private Member Functions | |
TAO_Notify_Event_Manager (TAO_Notify_Event_Manager &) | |
TAO_Notify_Event_Manager & | operator= (TAO_Notify_Event_Manager &) |
Private Attributes | |
ACE_Auto_Ptr< TAO_Notify_Consumer_Map > | consumer_map_ |
Consumer Map. | |
ACE_Auto_Ptr< TAO_Notify_Supplier_Map > | supplier_map_ |
Supplier Map. |
Definition at line 58 of file Event_Manager.h.
|
Reimplemented from TAO_Notify_Refcountable. Definition at line 61 of file Event_Manager.h. |
|
Constuctor.
Definition at line 64 of file Event_Manager.cpp.
00065 { 00066 } |
|
Destructor.
Definition at line 68 of file Event_Manager.cpp. References ACE_DEBUG, LM_DEBUG, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::proxy_count(), supplier_map(), and TAO_debug_level.
00069 { 00070 if (TAO_debug_level > 0) 00071 { 00072 ACE_DEBUG ((LM_DEBUG, "destroying consumer/supplier map count = %d/%d, \n", 00073 this->consumer_map().proxy_count (), this->supplier_map().proxy_count ())); 00074 } 00075 } |
|
|
|
Connect ProxyConsumer.
Definition at line 126 of file Event_Manager.cpp. References TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::connect(), supplier_map(), and TAO_Notify_Proxy::types_changed().
00127 { 00128 this->supplier_map().connect (proxy_consumer); 00129 // Inform about subscription types. 00130 TAO_Notify_EventTypeSeq removed; 00131 proxy_consumer->types_changed (this->subscription_types (), removed); 00132 } |
|
Connect ProxySupplier.
Definition at line 110 of file Event_Manager.cpp. References consumer_map(), and TAO_Notify_Proxy::types_changed(). Referenced by TAO_Notify_ProxySupplier::connect(), and TAO_Notify_ProxyConsumer::connect().
00111 { 00112 this->consumer_map().connect (proxy_supplier); 00113 00114 // Inform about offered types. 00115 TAO_Notify_EventTypeSeq removed; 00116 proxy_supplier->types_changed (this->offered_types (), removed); 00117 } |
|
Map accessors.
Definition at line 240 of file Event_Manager.cpp. References ACE_ASSERT, and consumer_map_. Referenced by connect(), disconnect(), TAO_Notify_Method_Request_Lookup::execute_i(), init(), offer_change(), subscribe(), and un_subscribe().
00241 { 00242 ACE_ASSERT( this->consumer_map_.get() != 0 ); 00243 return *this->consumer_map_; 00244 } |
|
Disconnect ProxyConsumer.
Definition at line 135 of file Event_Manager.cpp. References TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::disconnect(), and supplier_map().
00136 { 00137 this->supplier_map().disconnect (proxy_consumer); 00138 } |
|
Disconnect ProxySupplier.
Definition at line 120 of file Event_Manager.cpp. References consumer_map(). Referenced by TAO_Notify_ProxySupplier::disconnect(), and TAO_Notify_ProxyConsumer::disconnect().
00121 { 00122 this->consumer_map().disconnect (proxy_supplier); 00123 } |
|
Init.
Definition at line 83 of file Event_Manager.cpp. References ACE_ASSERT, ACE_NEW_THROW_EX, consumer_map(), consumer_map_, ACE_Auto_Basic_Ptr< X >::reset(), supplier_map(), supplier_map_, and TAO_Notify_Supplier_Map. Referenced by TAO_Notify_EventChannel::init().
00084 { 00085 ACE_ASSERT (this->consumer_map_.get() == 0); 00086 00087 TAO_Notify_Consumer_Map* consumer_map = 0; 00088 ACE_NEW_THROW_EX (consumer_map, 00089 TAO_Notify_Consumer_Map (), 00090 CORBA::NO_MEMORY ()); 00091 this->consumer_map_.reset( consumer_map ); 00092 00093 this->consumer_map().init (); 00094 00095 TAO_Notify_Supplier_Map* supplier_map = 0; 00096 ACE_NEW_THROW_EX (supplier_map, 00097 TAO_Notify_Supplier_Map (), 00098 CORBA::NO_MEMORY ()); 00099 this->supplier_map_.reset( supplier_map ); 00100 00101 this->supplier_map_->init (); 00102 } |
|
Offer change received on .
Definition at line 141 of file Event_Manager.cpp. References consumer_map(), publish(), and un_publish(). Referenced by TAO_Notify_ProxyConsumer::connect(), TAO_Notify_ProxyConsumer::disconnect(), and TAO_Notify_ProxyConsumer_T< SERVANT_TYPE >::offer_change().
00142 { 00143 TAO_Notify_EventTypeSeq new_added, last_removed; 00144 00145 this->publish (proxy_consumer, added, new_added); 00146 00147 this->un_publish (proxy_consumer, removed, last_removed); 00148 00149 TAO_Notify_Consumer_Map::ENTRY::COLLECTION* updates_collection = this->consumer_map().updates_collection (); 00150 00151 TAO_Notify_ProxySupplier_Update_Worker worker (new_added, last_removed); 00152 00153 if (updates_collection != 0) 00154 updates_collection->for_each (&worker); 00155 } |
|
What are the types being offered.
Definition at line 254 of file Event_Manager.cpp. References supplier_map_.
00255 { 00256 return this->supplier_map_->event_types (); 00257 } |
|
|
|
Subscribe to the event type sequence list .
Definition at line 208 of file Event_Manager.cpp. References ACE_Unbounded_Set< TAO_Notify_EventType >::insert(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::insert(), and supplier_map(). Referenced by offer_change().
00209 { 00210 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00211 00212 TAO_Notify_EventType* event_type = 0; 00213 00214 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00215 { 00216 int result = supplier_map().insert (proxy_consumer, *event_type); 00217 00218 if (result == 1) 00219 new_seq.insert (*event_type); 00220 } 00221 } |
|
The release method is called when the refcount reaches 0.
Implements TAO_Notify_Refcountable. Definition at line 77 of file Event_Manager.cpp.
00078 { 00079 delete this; 00080 } |
|
Init.
Definition at line 105 of file Event_Manager.cpp. Referenced by TAO_Notify_EventChannel::shutdown().
00106 { 00107 } |
|
Subscribe to the event type sequence list .
Definition at line 176 of file Event_Manager.cpp. References consumer_map(), and ACE_Unbounded_Set< TAO_Notify_EventType >::insert(). Referenced by subscription_change().
00177 { 00178 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00179 00180 TAO_Notify_EventType* event_type; 00181 00182 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00183 { 00184 int result = this->consumer_map().insert (proxy_supplier, *event_type); 00185 00186 if (result == 1) 00187 new_seq.insert (*event_type); 00188 } 00189 } |
|
Subscription change received on .
Definition at line 158 of file Event_Manager.cpp. References subscribe(), supplier_map(), un_subscribe(), and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_collection(). Referenced by TAO_Notify_ProxySupplier::connect(), TAO_Notify_ProxySupplier::disconnect(), and TAO_Notify_ProxySupplier_T< SERVANT_TYPE >::subscription_change().
00159 { 00160 TAO_Notify_EventTypeSeq new_added, last_removed; 00161 00162 this->subscribe (proxy_supplier, added, new_added); 00163 this->un_subscribe (proxy_supplier, removed, last_removed); 00164 00165 TAO_Notify_Supplier_Map::ENTRY::COLLECTION* updates_collection = this->supplier_map().updates_collection (); 00166 00167 TAO_Notify_ProxyConsumer_Update_Worker worker (new_added, last_removed); 00168 00169 if (updates_collection != 0) 00170 { 00171 updates_collection->for_each (&worker); 00172 } 00173 } |
|
What are the types being subscribed.
Definition at line 260 of file Event_Manager.cpp. References consumer_map_.
00261 { 00262 return this->consumer_map_->event_types (); 00263 } |
|
Definition at line 247 of file Event_Manager.cpp. References ACE_ASSERT, and supplier_map_. Referenced by connect(), disconnect(), init(), publish(), subscription_change(), un_publish(), and ~TAO_Notify_Event_Manager().
00248 { 00249 ACE_ASSERT( this->supplier_map_.get() != 0 ); 00250 return *this->supplier_map_; 00251 } |
|
Subscribe to the event type sequence list .
Definition at line 224 of file Event_Manager.cpp. References ACE_Unbounded_Set< TAO_Notify_EventType >::insert(), TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::remove(), and supplier_map(). Referenced by offer_change().
00225 { 00226 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00227 00228 TAO_Notify_EventType* event_type = 0; 00229 00230 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00231 { 00232 int result = supplier_map().remove (proxy_consumer, *event_type); 00233 00234 if (result == 1) 00235 last_seq.insert (*event_type); 00236 } 00237 } |
|
Unsubscribe to the event type sequence list .
Definition at line 192 of file Event_Manager.cpp. References consumer_map(), and ACE_Unbounded_Set< TAO_Notify_EventType >::insert(). Referenced by subscription_change().
00193 { 00194 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00195 00196 TAO_Notify_EventType* event_type = 0; 00197 00198 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00199 { 00200 int result = this->consumer_map().remove (proxy_supplier, *event_type); 00201 00202 if (result == 1) 00203 last_seq.insert (*event_type); 00204 } 00205 } |
|
Consumer Map.
Definition at line 126 of file Event_Manager.h. Referenced by consumer_map(), init(), and subscription_types(). |
|
Supplier Map.
Definition at line 129 of file Event_Manager.h. Referenced by init(), offered_types(), and supplier_map(). |