#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 () |
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 132 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::connect(), and supplier_map().
00133 { 00134 this->supplier_map().connect (proxy_consumer ACE_ENV_ARG_PARAMETER); 00135 ACE_CHECK; 00136 // Inform about subscription types. 00137 TAO_Notify_EventTypeSeq removed; 00138 proxy_consumer->types_changed (this->subscription_types (), removed ACE_ENV_ARG_PARAMETER); 00139 } |
|
Connect ProxySupplier.
Definition at line 114 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, and consumer_map().
00115 { 00116 this->consumer_map().connect (proxy_supplier ACE_ENV_ARG_PARAMETER); 00117 ACE_CHECK; 00118 00119 // Inform about offered types. 00120 TAO_Notify_EventTypeSeq removed; 00121 proxy_supplier->types_changed (this->offered_types (), removed ACE_ENV_ARG_PARAMETER); 00122 ACE_CHECK; 00123 } |
|
Map accessors.
Definition at line 256 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().
00257 { 00258 ACE_ASSERT( this->consumer_map_.get() != 0 ); 00259 return *this->consumer_map_; 00260 } |
|
Disconnect ProxyConsumer.
Definition at line 142 of file Event_Manager.cpp. References ACE_ENV_ARG_PARAMETER, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::disconnect(), and supplier_map().
00143 { 00144 this->supplier_map().disconnect (proxy_consumer ACE_ENV_ARG_PARAMETER); 00145 } |
|
Disconnect ProxySupplier.
Definition at line 126 of file Event_Manager.cpp. References ACE_ENV_ARG_PARAMETER, and consumer_map(). Referenced by TAO_Notify_ProxySupplier::disconnect(), and TAO_Notify_ProxyConsumer::disconnect().
00127 { 00128 this->consumer_map().disconnect (proxy_supplier ACE_ENV_ARG_PARAMETER); 00129 } |
|
Init.
Definition at line 83 of file Event_Manager.cpp. References ACE_ASSERT, ACE_CHECK, ACE_ENV_SINGLE_ARG_PARAMETER, 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 ACE_CHECK; 00092 this->consumer_map_.reset( consumer_map ); 00093 00094 this->consumer_map().init (ACE_ENV_SINGLE_ARG_PARAMETER); 00095 ACE_CHECK; 00096 00097 TAO_Notify_Supplier_Map* supplier_map = 0; 00098 ACE_NEW_THROW_EX (supplier_map, 00099 TAO_Notify_Supplier_Map (), 00100 CORBA::NO_MEMORY ()); 00101 ACE_CHECK; 00102 this->supplier_map_.reset( supplier_map ); 00103 00104 this->supplier_map_->init (ACE_ENV_SINGLE_ARG_PARAMETER); 00105 ACE_CHECK; 00106 } |
|
Offer change received on .
Definition at line 148 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, consumer_map(), publish(), and un_publish(). Referenced by TAO_Notify_ProxyConsumer::disconnect().
00149 { 00150 TAO_Notify_EventTypeSeq new_added, last_removed; 00151 00152 this->publish (proxy_consumer, added, new_added ACE_ENV_ARG_PARAMETER); 00153 ACE_CHECK; 00154 00155 this->un_publish (proxy_consumer, removed, last_removed ACE_ENV_ARG_PARAMETER); 00156 ACE_CHECK; 00157 00158 TAO_Notify_Consumer_Map::ENTRY::COLLECTION* updates_collection = this->consumer_map().updates_collection (); 00159 00160 TAO_Notify_ProxySupplier_Update_Worker worker (new_added, last_removed); 00161 00162 if (updates_collection != 0) 00163 updates_collection->for_each (&worker ACE_ENV_ARG_PARAMETER); 00164 } |
|
What are the types being offered.
Definition at line 270 of file Event_Manager.cpp. References supplier_map_.
00271 { 00272 return this->supplier_map_->event_types (); 00273 } |
|
|
|
Subscribe to the event type sequence list .
Definition at line 222 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::insert(), and supplier_map(). Referenced by offer_change().
00223 { 00224 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00225 00226 TAO_Notify_EventType* event_type = 0; 00227 00228 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00229 { 00230 int result = supplier_map().insert (proxy_consumer, *event_type ACE_ENV_ARG_PARAMETER); 00231 ACE_CHECK; 00232 00233 if (result == 1) 00234 new_seq.insert (*event_type); 00235 } 00236 } |
|
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 109 of file Event_Manager.cpp. Referenced by TAO_Notify_EventChannel::shutdown().
00110 { 00111 } |
|
Subscribe to the event type sequence list .
Definition at line 188 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, and consumer_map(). Referenced by subscription_change().
00189 { 00190 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00191 00192 TAO_Notify_EventType* event_type; 00193 00194 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00195 { 00196 int result = this->consumer_map().insert (proxy_supplier, *event_type ACE_ENV_ARG_PARAMETER); 00197 ACE_CHECK; 00198 00199 if (result == 1) 00200 new_seq.insert (*event_type); 00201 } 00202 } |
|
Subscription change received on .
Definition at line 167 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, subscribe(), supplier_map(), un_subscribe(), and TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::updates_collection(). Referenced by TAO_Notify_ProxySupplier::disconnect().
00168 { 00169 TAO_Notify_EventTypeSeq new_added, last_removed; 00170 00171 this->subscribe (proxy_supplier, added, new_added ACE_ENV_ARG_PARAMETER); 00172 ACE_CHECK; 00173 this->un_subscribe (proxy_supplier, removed, last_removed ACE_ENV_ARG_PARAMETER); 00174 ACE_CHECK; 00175 00176 TAO_Notify_Supplier_Map::ENTRY::COLLECTION* updates_collection = this->supplier_map().updates_collection (); 00177 00178 TAO_Notify_ProxyConsumer_Update_Worker worker (new_added, last_removed); 00179 00180 if (updates_collection != 0) 00181 { 00182 updates_collection->for_each (&worker ACE_ENV_ARG_PARAMETER); 00183 ACE_CHECK; 00184 } 00185 } |
|
What are the types being subscribed.
Definition at line 276 of file Event_Manager.cpp. References consumer_map_.
00277 { 00278 return this->consumer_map_->event_types (); 00279 } |
|
Definition at line 263 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().
00264 { 00265 ACE_ASSERT( this->supplier_map_.get() != 0 ); 00266 return *this->supplier_map_; 00267 } |
|
Subscribe to the event type sequence list .
Definition at line 239 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, TAO_Notify_Event_Map_T< PROXY, ACE_LOCK >::remove(), and supplier_map(). Referenced by offer_change().
00240 { 00241 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00242 00243 TAO_Notify_EventType* event_type = 0; 00244 00245 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00246 { 00247 int result = supplier_map().remove (proxy_consumer, *event_type ACE_ENV_ARG_PARAMETER); 00248 ACE_CHECK; 00249 00250 if (result == 1) 00251 last_seq.insert (*event_type); 00252 } 00253 } |
|
Unsubscribe to the event type sequence list .
Definition at line 205 of file Event_Manager.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, and consumer_map(). Referenced by subscription_change().
00206 { 00207 TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq); 00208 00209 TAO_Notify_EventType* event_type = 0; 00210 00211 for (iter.first (); iter.next (event_type) != 0; iter.advance ()) 00212 { 00213 int result = this->consumer_map().remove (proxy_supplier, *event_type ACE_ENV_ARG_PARAMETER); 00214 ACE_CHECK; 00215 00216 if (result == 1) 00217 last_seq.insert (*event_type); 00218 } 00219 } |
|
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(). |