TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, > Class Template Reference

TAO_ESF_Delayed_Operations. More...

#include <ESF_Delayed_Changes.h>

Inheritance diagram for TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >:

Inheritance graph
[legend]
Collaboration diagram for TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef TAO_ESF_Connected_Command<
TAO_ESF_Delayed_Changes<
PROXY, COLLECTION, ITERATOR,
ACE_SYNCH_USE >, PROXY > 
Connected_Command
typedef TAO_ESF_Reconnected_Command<
TAO_ESF_Delayed_Changes<
PROXY, COLLECTION, ITERATOR,
ACE_SYNCH_USE >, PROXY > 
Reconnected_Command
typedef TAO_ESF_Disconnected_Command<
TAO_ESF_Delayed_Changes<
PROXY, COLLECTION, ITERATOR,
ACE_SYNCH_USE >, PROXY > 
Disconnected_Command
typedef TAO_ESF_Shutdown_Command<
TAO_ESF_Delayed_Changes<
PROXY, COLLECTION, ITERATOR,
ACE_SYNCH_USE > > 
Shutdown_Command

Public Member Functions

 TAO_ESF_Delayed_Changes (void)
 TAO_ESF_Delayed_Changes (const COLLECTION &collection)
int busy (void)
int idle (void)
int execute_delayed_operations (void)
void connected_i (PROXY *proxy ACE_ENV_ARG_DECL)
void reconnected_i (PROXY *proxy ACE_ENV_ARG_DECL)
void disconnected_i (PROXY *proxy ACE_ENV_ARG_DECL)
void shutdown_i (ACE_ENV_SINGLE_ARG_DECL)
virtual void for_each (TAO_ESF_Worker< PROXY > *worker ACE_ENV_ARG_DECL)
virtual void connected (PROXY *proxy ACE_ENV_ARG_DECL)
virtual void reconnected (PROXY *proxy ACE_ENV_ARG_DECL)
virtual void disconnected (PROXY *proxy ACE_ENV_ARG_DECL)
virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)

Private Types

typedef TAO_ESF_Busy_Lock_Adapter<
TAO_ESF_Delayed_Changes<
PROXY, COLLECTION, ITERATOR,
ACE_SYNCH_USE > > 
Busy_Lock

Private Attributes

COLLECTION collection_
Busy_Lock lock_
ACE_SYNCH_MUTEX_T busy_lock_
ACE_SYNCH_CONDITION_T busy_cond_
CORBA::ULong busy_count_
CORBA::ULong write_delay_count_
CORBA::ULong busy_hwm_
 Control variables for the concurrency policies.
CORBA::ULong max_write_delay_
ACE_Unbounded_Queue< ACE_Command_Base * > command_queue_

Detailed Description

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL>
class TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >

TAO_ESF_Delayed_Operations.

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:


Member Typedef Documentation

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
typedef TAO_ESF_Busy_Lock_Adapter<TAO_ESF_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE> > TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::Busy_Lock [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
typedef TAO_ESF_Connected_Command<TAO_ESF_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>,PROXY> TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::Connected_Command

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
typedef TAO_ESF_Disconnected_Command<TAO_ESF_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>,PROXY> TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::Disconnected_Command

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
typedef TAO_ESF_Reconnected_Command<TAO_ESF_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>,PROXY> TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::Reconnected_Command

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
typedef TAO_ESF_Shutdown_Command<TAO_ESF_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE> > TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::Shutdown_Command


Constructor & Destructor Documentation

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::TAO_ESF_Delayed_Changes ( void   ) 

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::TAO_ESF_Delayed_Changes ( const COLLECTION &  collection  ) 


Member Function Documentation

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
int TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::busy ( void   ) 

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::connected ( PROXY *proxy  ACE_ENV_ARG_DECL  )  [virtual]

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
TAO_BEGIN_VERSIONED_NAMESPACE_DECL void TAO_ESF_Delayed_Changes< PROXY, C, I, >::connected_i ( PROXY *proxy  ACE_ENV_ARG_DECL  ) 

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::disconnected ( PROXY *proxy  ACE_ENV_ARG_DECL  )  [virtual]

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::disconnected_i ( PROXY *proxy  ACE_ENV_ARG_DECL  ) 

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
int TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::execute_delayed_operations ( void   ) 

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::for_each ( TAO_ESF_Worker< PROXY > *worker  ACE_ENV_ARG_DECL  )  [virtual]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
int TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::idle ( void   ) 

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::reconnected ( PROXY *proxy  ACE_ENV_ARG_DECL  )  [virtual]

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::reconnected_i ( PROXY *proxy  ACE_ENV_ARG_DECL  ) 

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::shutdown ( ACE_ENV_SINGLE_ARG_DECL   )  [virtual]

template<class PROXY, class C, class I, ACE_SYNCH_DECL >
void TAO_ESF_Delayed_Changes< PROXY, C, I, >::shutdown_i ( ACE_ENV_SINGLE_ARG_DECL   ) 


Member Data Documentation

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
ACE_SYNCH_CONDITION_T TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::busy_cond_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
CORBA::ULong TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::busy_count_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
CORBA::ULong TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::busy_hwm_ [private]

Control variables for the concurrency policies.

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
ACE_SYNCH_MUTEX_T TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::busy_lock_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
COLLECTION TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::collection_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
ACE_Unbounded_Queue<ACE_Command_Base*> TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::command_queue_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
Busy_Lock TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::lock_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
CORBA::ULong TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::max_write_delay_ [private]

template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL >
CORBA::ULong TAO_ESF_Delayed_Changes< PROXY, COLLECTION, ITERATOR, >::write_delay_count_ [private]


The documentation for this class was generated from the following files:
Generated on Tue Nov 21 09:52:35 2006 for TAO_ESF by  doxygen 1.4.7-1