ACE  6.0.6
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
ACE_TSS_Cleanup Class Reference

Singleton that helps to manage the lifetime of TSS objects and keys. More...

Collaboration diagram for ACE_TSS_Cleanup:
Collaboration graph
[legend]

List of all members.

Public Member Functions

int insert (ACE_thread_key_t key, void(*destructor)(void *))
void thread_use_key (ACE_thread_key_t key)
 Mark a key as being used by this thread.
int thread_detach_key (ACE_thread_key_t key)
int free_key (ACE_thread_key_t key)
void thread_exit (void)

Private Types

typedef ACE_TSS_Info ACE_TSS_TABLE [ACE_DEFAULT_THREAD_KEYS]
typedef ACE_TSS_InfoACE_TSS_TABLE_ITERATOR

Private Member Functions

void dump (void)
void thread_release (ACE_TSS_Info &info, ACE_TSS_Info::Destructor &destructor, void *&tss_obj)
int remove_key (ACE_TSS_Info &info)
bool find_tss_keys (ACE_TSS_Keys *&thread_keys) const
ACE_TSS_Keystss_keys ()
 ACE_TSS_Cleanup (void)
 Ensure singleton.
 ~ACE_TSS_Cleanup (void)

Private Attributes

ACE_TSS_TABLE table_
 Table of <ACE_TSS_Info>'s.
ACE_thread_key_t in_use_

Friends

class TSS_Cleanup_Instance
 ACE_TSS_Cleanup access only via TSS_Cleanup_Instance.

Detailed Description

Singleton that helps to manage the lifetime of TSS objects and keys.


Member Typedef Documentation

typedef ACE_TSS_Info ACE_TSS_Cleanup::ACE_TSS_TABLE[ACE_DEFAULT_THREAD_KEYS] [private]

Constructor & Destructor Documentation

ACE_TSS_Cleanup::ACE_TSS_Cleanup ( void  ) [private]

Ensure singleton.

ACE_TSS_Cleanup::~ACE_TSS_Cleanup ( void  ) [private]

Member Function Documentation

void ACE_TSS_Cleanup::dump ( void  ) [private]
bool ACE_TSS_Cleanup::find_tss_keys ( ACE_TSS_Keys *&  thread_keys) const [private]

Find the TSS keys (if any) for this thread.

Parameters:
thread_keysreference to pointer to be filled in by this function.
Returns:
false if keys don't exist.
int ACE_TSS_Cleanup::free_key ( ACE_thread_key_t  key)

This key is no longer used Release key if use count == 0 fail if use_count != 0;

Parameters:
keythe key to be released
int ACE_TSS_Cleanup::insert ( ACE_thread_key_t  key,
void(*)(void *)  destructor 
)

Register a newly-allocated key

Parameters:
keythe key to be monitored
destructorthe function to call to delete objects stored via this key
int ACE_TSS_Cleanup::remove_key ( ACE_TSS_Info info) [private]

remove key if it's unused (thread_count == 0)

Parameters:
inforeference to the info for this key
int ACE_TSS_Cleanup::thread_detach_key ( ACE_thread_key_t  key)

This thread is no longer using this key call destructor if appropriate

void ACE_TSS_Cleanup::thread_exit ( void  )

Cleanup the thread-specific objects. Does _NOT_ exit the thread. For each used key perform the same actions as free_key.

void ACE_TSS_Cleanup::thread_release ( ACE_TSS_Info info,
ACE_TSS_Info::Destructor destructor,
void *&  tss_obj 
) [private]

Release a key used by this thread

Parameters:
inforeference to the info for this key
destructorout arg to receive destructor function ptr
tss_objout arg to receive pointer to deletable object
void ACE_TSS_Cleanup::thread_use_key ( ACE_thread_key_t  key)

Mark a key as being used by this thread.

ACE_TSS_Keys * ACE_TSS_Cleanup::tss_keys ( ) [private]

Accessor for this threads ACE_TSS_Keys instance. Creates the keys if necessary.


Friends And Related Function Documentation

friend class TSS_Cleanup_Instance [friend]

Member Data Documentation

Key for the thread-specific ACE_TSS_Keys Used by find_tss_keys() or tss_keys() to find the bit array that records whether each TSS key is in use by this thread.

Table of <ACE_TSS_Info>'s.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines