3 // ===================================================================
5 * @file Cleanup_Func_Registry.h
7 * @author Ossama Othman <ossama@dre.vanderbilt.edu>
9 // ===================================================================
11 #ifndef TAO_CLEANUP_FUNC_REGISTRY_H
12 #define TAO_CLEANUP_FUNC_REGISTRY_H
14 #include /**/ "ace/pre.h"
16 #include /**/ "tao/TAO_Export.h"
18 #if !defined (ACE_LACKS_PRAGMA_ONCE)
20 #endif /* ACE_LACKS_PRAGMA_ONCE */
22 #include /**/ "tao/Versioned_Namespace.h"
24 #include "ace/Array_Base.h"
26 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
29 * @class TAO_Cleanup_Func_Registry
32 * This is a helper class that is designed to perform cleanup on
33 * thread-specific objects registered in the ORB Core TSS resources by
34 * invoking the corresponding cleanup function on each object. Hence,
35 * there is a tight coupling between this class and the TAO ORB Core.
37 class TAO_Export TAO_Cleanup_Func_Registry
39 friend class TAO_ORB_Core
;
43 TAO_Cleanup_Func_Registry () = default;
45 /// Return the number of registered cleanup functions.
49 /// Register a cleanup function. The number of slot the cleanup
50 /// function is placed is in will match the one reserved for the
51 /// corresponding thread specific object in the ORB Core TSS
52 /// resources. The @a slot_id is returned via the second reference
53 /// argument. This method returns 0 on failure, and -1 on failure.
54 int register_cleanup_function (ACE_CLEANUP_FUNC func
, size_t &slot_id
);
56 /// Invoke the corresponding cleanup function on each
57 /// thread-specific object.
58 void cleanup (ACE_Array_Base
<void *> &ts_objects
);
61 TAO_Cleanup_Func_Registry (const TAO_Cleanup_Func_Registry
&) = delete;
62 TAO_Cleanup_Func_Registry
&operator= (const TAO_Cleanup_Func_Registry
&) = delete;
64 /// Array of registered cleanup functions. The number of
65 /// registered cleanup functions should be the same as the number
66 /// of registered thread-specific objects in the ORB Core TSS
68 ACE_Array_Base
<ACE_CLEANUP_FUNC
> cleanup_funcs_
;
71 TAO_END_VERSIONED_NAMESPACE_DECL
73 #if defined (__ACE_INLINE__)
74 # include "tao/Cleanup_Func_Registry.inl"
75 #endif /* __ACE_INLINE__ */
78 #include /**/ "ace/post.h"
80 #endif /* TAO_CLEANUP_FUNC_REGISTRY_H */