Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

TAO_ESF_Copy_On_Write Class Template Reference

TAO_ESF_Copy_On_Write. More...

#include <ESF_Copy_On_Write.h>

Inheritance diagram for TAO_ESF_Copy_On_Write

Inheritance graph
[legend]
Collaboration diagram for TAO_ESF_Copy_On_Write:

Collaboration graph
[legend]
List of all members.

Public Types

typedef TAO_ESF_Copy_On_Write_Read_Guard<
COLLECTION,ITERATOR,ACE_SYNCH_MUTEX_T
Read_Guard
 Constructor.

typedef TAO_ESF_Copy_On_Write_Write_Guard<
COLLECTION,ITERATOR,ACE_SYNCH_USE
Write_Guard

Public Methods

 TAO_ESF_Copy_On_Write (void)
 ~TAO_ESF_Copy_On_Write (void)
 Destructor.

virtual void for_each (TAO_ESF_Worker<PROXY> *worker, CORBA::Environment &ACE_TRY_ENV)
virtual void connected (PROXY *proxy, CORBA::Environment &ACE_TRY_ENV)
 Insert a new element into the collection. The collection assumes ownership of the element.

virtual void reconnected (PROXY *proxy, CORBA::Environment &ACE_TRY_ENV)
virtual void disconnected (PROXY *proxy, CORBA::Environment &ACE_TRY_ENV)
 Remove an element from the collection.

virtual void shutdown (CORBA::Environment &ACE_TRY_ENV)
 The EC is shutting down, must release all the elements.


Private Types

typedef TAO_ESF_Copy_On_Write_Collection<
COLLECTION,ITERATOR> 
Collection

Private Attributes

ACE_SYNCH_MUTEX_T mutex_
 A mutex to serialize access to the collection pointer.

int pending_writes_
 Number of pending writes.

int writing_
ACE_SYNCH_CONDITION_T cond_
 A condition variable to wait to synchronize multiple writers.

Collectioncollection_
 The collection, with reference counting added.


Detailed Description

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

TAO_ESF_Copy_On_Write.

Implement the Copy_On_Write protocol The class is parametric on the kind of collection and locking mechanism used.


Member Typedef Documentation

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
typedef TAO_ESF_Copy_On_Write_Collection<COLLECTION,ITERATOR> TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::Collection [private]
 

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
typedef TAO_ESF_Copy_On_Write_Read_Guard<COLLECTION,ITERATOR,ACE_SYNCH_MUTEX_T> TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::Read_Guard
 

Constructor.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
typedef TAO_ESF_Copy_On_Write_Write_Guard<COLLECTION,ITERATOR,ACE_SYNCH_USE> TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::Write_Guard
 


Constructor & Destructor Documentation

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
TAO_ESF_Copy_On_Write< PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE >::TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, > ( void )
 

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::~TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, > ( void )
 

Destructor.


Member Function Documentation

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
void TAO_ESF_Copy_On_Write< PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE >::connected ( PROXY * proxy,
CORBA::Environment & ACE_TRY_ENV ) [virtual]
 

Insert a new element into the collection. The collection assumes ownership of the element.

Reimplemented from TAO_ESF_Proxy_Collection.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
void TAO_ESF_Copy_On_Write< PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE >::disconnected ( PROXY * proxy,
CORBA::Environment & ACE_TRY_ENV ) [virtual]
 

Remove an element from the collection.

Reimplemented from TAO_ESF_Proxy_Collection.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
void TAO_ESF_Copy_On_Write< PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE >::for_each ( TAO_ESF_Worker< PROXY >* worker,
CORBA::Environment & ACE_TRY_ENV ) [virtual]
 

Iterate over the collection and invoke worker->work() for each member of the collection. This encapsulates

Reimplemented from TAO_ESF_Proxy_Collection.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
void TAO_ESF_Copy_On_Write< PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE >::reconnected ( PROXY * proxy,
CORBA::Environment & ACE_TRY_ENV ) [virtual]
 

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.

Reimplemented from TAO_ESF_Proxy_Collection.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
void TAO_ESF_Copy_On_Write< PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE >::shutdown ( CORBA::Environment & ACE_TRY_ENV ) [virtual]
 

The EC is shutting down, must release all the elements.

Reimplemented from TAO_ESF_Proxy_Collection.


Member Data Documentation

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
Collection * TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::collection_ [private]
 

The collection, with reference counting added.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
ACE_SYNCH_CONDITION_T TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::cond_ [private]
 

A condition variable to wait to synchronize multiple writers.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
ACE_SYNCH_MUTEX_T TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::mutex_ [private]
 

A mutex to serialize access to the collection pointer.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
int TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::pending_writes_ [private]
 

Number of pending writes.

template<classPROXY, classCOLLECTION, classITERATOR, ACE_SYNCH_DECL>
int TAO_ESF_Copy_On_Write<PROXY, COLLECTION, ITERATOR, >::writing_ [private]
 

If non-zero then a thread is changing the collection. Many threads can use the collection simulatenously, but only one change it.


The documentation for this class was generated from the following files:
Generated at Fri Oct 5 08:19:15 2001 for TAO_ESF by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000