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>

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_FUNC > | cleanup_funcs_ |
Friends | |
| class | TAO_ORB_Core |
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.
| 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.
| 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.
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] |
| 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.
| 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.
00015 { 00016 return this->cleanup_funcs_.size (); 00017 }
friend class TAO_ORB_Core [friend] |
Definition at line 42 of file Cleanup_Func_Registry.h.
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.
1.6.1