#include <ESF_Delayed_Changes.h>
Inheritance diagram for TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >:
This class implements the Delayed Operations protocol to solve the concurrency challenges outlined in the documentation of TAO_ESF_Proxy_Collection. In short the class delays changes by putting them on an "operation queue", the operations are stored as command objects in this queue and executed once the system is quiescent (i.e. no threads are iterating over the collection). The algorithm implemented so far is:
Definition at line 88 of file ESF_Delayed_Changes.h.
|
Definition at line 118 of file ESF_Delayed_Changes.h. |
|
Definition at line 103 of file ESF_Delayed_Changes.h. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::connected(). |
|
Definition at line 105 of file ESF_Delayed_Changes.h. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::disconnected(). |
|
Definition at line 104 of file ESF_Delayed_Changes.h. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::reconnected(). |
|
Definition at line 106 of file ESF_Delayed_Changes.h. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::shutdown(). |
|
|
|
|
|
|
|
|
Definition at line 9 of file ESF_Delayed_Changes.inl. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::connected().
00010 { 00011 this->collection_.connected (proxy); 00012 } |
|
|
Definition at line 23 of file ESF_Delayed_Changes.inl. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::disconnected().
00024 { 00025 this->collection_.disconnected (proxy); 00026 } |
|
Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, ACE_SYNCH_USE >::idle(). |
|
Iterate over the collection and invoke worker->work() for each member of the collection. This encapsulates Implements TAO_ESF_Proxy_Collection< PROXY >. |
|
|
|
Insert an element into the collection. No errors can be raised if the element is already present. The collection assumes ownership, i.e. must invoke <proxy->_decr_refcnt()> if the element is already present in the collection. Implements TAO_ESF_Proxy_Collection< PROXY >. Definition at line 134 of file ESF_Delayed_Changes.cpp. References ACE_GUARD_THROW_EX, ACE_NEW, ACE_SYNCH_MUTEX_T, TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::busy_count_, TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::command_queue_, ACE_Unbounded_Queue< ACE_Command_Base * >::enqueue_tail(), TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::Reconnected_Command, TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::reconnected_i(), and TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::write_delay_count_.
00135 { 00136 ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, 00137 CORBA::INTERNAL ()); 00138 00139 proxy->_incr_refcnt (); 00140 if (this->busy_count_ == 0) 00141 { 00142 // We can reconnect the object immediately 00143 this->reconnected_i (proxy); 00144 } 00145 else 00146 { 00147 ACE_Command_Base* command; 00148 ACE_NEW (command, 00149 Reconnected_Command (this, 00150 proxy)); 00151 this->command_queue_.enqueue_tail (command); 00152 this->write_delay_count_++; 00153 } 00154 } |
|
Definition at line 16 of file ESF_Delayed_Changes.inl. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::reconnected().
00017 { 00018 this->collection_.reconnected (proxy); 00019 } |
|
|
Definition at line 30 of file ESF_Delayed_Changes.inl. Referenced by TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::shutdown().
00031 { 00032 this->collection_.shutdown (); 00033 } |
|
Definition at line 124 of file ESF_Delayed_Changes.h. |
|
|
Control variables for the concurrency policies.
Definition at line 131 of file ESF_Delayed_Changes.h. |
|
Definition at line 122 of file ESF_Delayed_Changes.h. |
|
Definition at line 116 of file ESF_Delayed_Changes.h. |
|
|
Definition at line 120 of file ESF_Delayed_Changes.h. |
|
Definition at line 132 of file ESF_Delayed_Changes.h. |
|