TAO_Cleanup_Func_Registry Class Reference

This is a helper class that is designed to perform cleanup on thread-specific objects registered in the ORB Core TSS resources by invoking the corresponding cleanup function on each object. Hence, there is a tight coupling between this class and the TAO ORB Core. More...

#include <Cleanup_Func_Registry.h>

List of all members.

Public Member Functions

 TAO_Cleanup_Func_Registry (void)
 Constructor.
size_t size (void) const
 Return the number of registered cleanup functions.

Protected Member Functions

int register_cleanup_function (ACE_CLEANUP_FUNC func, size_t &slot_id)
void cleanup (ACE_Array_Base< void * > &ts_objects)

Private Member Functions

 TAO_Cleanup_Func_Registry (const TAO_Cleanup_Func_Registry &)
void operator= (const TAO_Cleanup_Func_Registry &)

Private Attributes

ACE_Array_Base< ACE_CLEANUP_FUNCcleanup_funcs_

Friends

class TAO_ORB_Core


Detailed Description

This is a helper class that is designed to perform cleanup on thread-specific objects registered in the ORB Core TSS resources by invoking the corresponding cleanup function on each object. Hence, there is a tight coupling between this class and the TAO ORB Core.

Definition at line 40 of file Cleanup_Func_Registry.h.


Constructor & Destructor Documentation

TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE TAO_Cleanup_Func_Registry::TAO_Cleanup_Func_Registry ( void   ) 

Constructor.

Definition at line 8 of file Cleanup_Func_Registry.inl.

00009   : cleanup_funcs_ ()
00010 {
00011 }

TAO_Cleanup_Func_Registry::TAO_Cleanup_Func_Registry ( const TAO_Cleanup_Func_Registry  )  [private]

Prevent copying through the copy constructor and the assignment operator.


Member Function Documentation

void TAO_Cleanup_Func_Registry::cleanup ( ACE_Array_Base< void * > &  ts_objects  )  [protected]

Invoke the corresponding cleanup function on each thread-specific object.

Cleanup each TSS object.

Definition at line 31 of file Cleanup_Func_Registry.cpp.

References ACE_ASSERT, cleanup_funcs_, and ACE_Array_Base< T >::size().

00032 {
00033   size_t const len = ts_objects.size ();
00034 
00035   // The allocated slot may never have been used.  It is therefore
00036   // possible that the TSS array size may be less than the cleanup
00037   // function size.  However, there is still a one-to-one
00038   // correspondence between cleanup_func[foo] and ts_object[foo].
00039 
00040   ACE_ASSERT (len <= this->cleanup_funcs_.size ());
00041 
00042   /// Cleanup each TSS object.
00043   for (size_t i = 0; i < len; ++i)
00044     {
00045       ACE_CLEANUP_FUNC destructor = this->cleanup_funcs_[i];
00046       if (destructor != 0)
00047         destructor (ts_objects[i], 0);
00048     }
00049 }

void TAO_Cleanup_Func_Registry::operator= ( const TAO_Cleanup_Func_Registry  )  [private]

TAO_BEGIN_VERSIONED_NAMESPACE_DECL int TAO_Cleanup_Func_Registry::register_cleanup_function ( ACE_CLEANUP_FUNC  func,
size_t &  slot_id 
) [protected]

Register a cleanup function. The number of slot the cleanup function is placed is in will match the one reserved for the corresponding thread specific object in the ORB Core TSS resources. The slot_id is returned via the second reference argument. This method returns 0 on failure, and -1 on failure.

Definition at line 16 of file Cleanup_Func_Registry.cpp.

Referenced by TAO_ORB_Core::add_tss_cleanup_func().

00018 {
00019   size_t const slot = this->cleanup_funcs_.size ();
00020 
00021   if (this->cleanup_funcs_.size (slot + 1) != 0)
00022     return -1;
00023 
00024   this->cleanup_funcs_[slot] = func;
00025   slot_id = slot;
00026 
00027   return 0;
00028 }

ACE_INLINE size_t TAO_Cleanup_Func_Registry::size ( void   )  const

Return the number of registered cleanup functions.

Definition at line 14 of file Cleanup_Func_Registry.inl.

References cleanup_funcs_.

00015 {
00016   return this->cleanup_funcs_.size ();
00017 }


Friends And Related Function Documentation

friend class TAO_ORB_Core [friend]

Definition at line 42 of file Cleanup_Func_Registry.h.


Member Data Documentation

ACE_Array_Base<ACE_CLEANUP_FUNC> TAO_Cleanup_Func_Registry::cleanup_funcs_ [private]

Array of registered cleanup functions. The number of registered cleanup functions should be the same as the number of registered thread-specific objects in the ORB Core TSS resources.

Definition at line 78 of file Cleanup_Func_Registry.h.

Referenced by cleanup(), and size().


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:39:23 2010 for TAO by  doxygen 1.4.7