ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > Class Template Reference

Define a map abstraction that associates <EXT_ID>s with <INT_ID>s. More...

#include <Map_Manager.h>

Collaboration diagram for ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef EXT_ID KEY
typedef INT_ID VALUE
typedef ACE_LOCK lock_type
typedef ACE_Map_Entry< EXT_ID,
INT_ID
ENTRY
typedef ACE_Map_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
ITERATOR
typedef ACE_Map_Const_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
CONST_ITERATOR
typedef
ACE_Map_Reverse_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
REVERSE_ITERATOR
typedef ACE_Map_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
iterator
typedef ACE_Map_Const_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
const_iterator
typedef
ACE_Map_Reverse_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
reverse_iterator

Public Member Functions

 ACE_Map_Manager (ACE_Allocator *alloc=0)
 Initialize a ACE_Map_Manager with the ACE_DEFAULT_MAP_SIZE.
 ACE_Map_Manager (size_t size, ACE_Allocator *alloc=0)
 Initialize a ACE_Map_Manager with size entries.
int open (size_t length=ACE_DEFAULT_MAP_SIZE, ACE_Allocator *alloc=0)
 Initialize a ACE_Map_Manager with size length.
int close (void)
 ~ACE_Map_Manager (void)
int bind (const EXT_ID &ext_id, const INT_ID &int_id)
int rebind (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id)
int rebind (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id)
int rebind (const EXT_ID &ext_id, const INT_ID &int_id)
int trybind (const EXT_ID &ext_id, INT_ID &int_id)
int find (const EXT_ID &ext_id, INT_ID &int_id) const
int find (const EXT_ID &ext_id) const
 Returns 0 if the ext_id is in the mapping, otherwise -1.
int unbind (const EXT_ID &ext_id)
int unbind (const EXT_ID &ext_id, INT_ID &int_id)
void unbind_all (void)
size_t current_size (void) const
 Return the current size of the map.
size_t total_size (void) const
 Return the total size of the map.
ACE_LOCK & mutex (void)
void dump (void) const
 Dump the state of an object.
ACE_Map_Iterator< EXT_ID,
INT_ID, ACE_LOCK > 
begin (void)
 Return forward iterator.
ACE_Map_Iterator< EXT_ID,
INT_ID, ACE_LOCK > 
end (void)
ACE_Map_Reverse_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
rbegin (void)
 Return reverse iterator.
ACE_Map_Reverse_Iterator
< EXT_ID, INT_ID, ACE_LOCK > 
rend (void)

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Protected Types

enum  { MAX_EXPONENTIAL = 64 * 1024, LINEAR_INCREASE = 32 * 1024 }

Protected Member Functions

int bind_i (const EXT_ID &ext_id, const INT_ID &int_id)
int shared_bind (const EXT_ID &ext_id, const INT_ID &int_id)
int rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id)
int rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id)
int rebind_i (const EXT_ID &ext_id, const INT_ID &int_id)
int trybind_i (const EXT_ID &ext_id, INT_ID &int_id)
int find_i (const EXT_ID &ext_id, INT_ID &int_id)
int find_and_return_index (const EXT_ID &ext_id, ACE_UINT32 &slot)
int unbind_i (const EXT_ID &ext_id, INT_ID &int_id)
int unbind_i (const EXT_ID &ext_id)
int unbind_and_return_index (const EXT_ID &ext_id, ACE_UINT32 &slot)
void unbind_slot (ACE_UINT32 slot)
 Unbind slot.
int resize_i (ACE_UINT32 size)
 Resize the map. Must be called with locks held.
int close_i (void)
 Close down a <Map_Manager>. Must be called with locks held.
int equal (const EXT_ID &id1, const EXT_ID &id2)
ACE_UINT32 new_size (void)
void free_search_structure (void)
ACE_UINT32 free_list_id (void) const
 Id of the free list sentinel.
ACE_UINT32 occupied_list_id (void) const
 Id of the occupied list sentinel.
int next_free (ACE_UINT32 &slot)
 Finds the next free slot.
void move_from_free_list_to_occupied_list (ACE_UINT32 slot)
 Move from free list to occupied list.
void move_from_occupied_list_to_free_list (ACE_UINT32 slot)
 Move from occupied list to free list.
void move_all_free_slots_from_occupied_list (void)
void shared_move (ACE_UINT32 slot, ACE_Map_Entry< EXT_ID, INT_ID > &current_list, ACE_UINT32 current_list_id, ACE_Map_Entry< EXT_ID, INT_ID > &new_list, ACE_UINT32 new_list_id)
 Move helper.

Protected Attributes

ACE_Allocatorallocator_
 Pointer to a memory allocator.
ACE_LOCK lock_
 Synchronization variable for the MT_SAFE ACE_Map_Manager.
ACE_Map_Entry< EXT_ID, INT_ID > * search_structure_
 Implement the Map as a resizeable array of ACE_Map_Entry.
ACE_UINT32 total_size_
 Total number of elements in this->search_structure_.
ACE_UINT32 cur_size_
 Current size of the map.
ACE_Map_Entry< EXT_ID, INT_IDfree_list_
 Free list.
ACE_Map_Entry< EXT_ID, INT_IDoccupied_list_
 Occupied list.

Private Member Functions

 ACE_UNIMPLEMENTED_FUNC (void operator=(const ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > &)) ACE_UNIMPLEMENTED_FUNC(ACE_Map_Manager(const ACE_Map_Manager< EXT_ID

Private Attributes

 INT_ID

Friends

class ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >
class ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >
class ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >
class ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >
class ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >

Detailed Description

template<class EXT_ID, class INT_ID, class ACE_LOCK>
class ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >

Define a map abstraction that associates <EXT_ID>s with <INT_ID>s.

The <EXT_ID> must support <operator==>. This constraint can be alleviated via template specialization, as shown in the $ACE_ROOT/tests/Conn_Test.cpp test. This class uses an ACE_Allocator to allocate memory. The user can make this a persistant class by providing an ACE_Allocator with a persistable memory pool. This implementation of a map uses an array, which is searched linearly. For more efficient searching you should use the <ACE_Hash_Map_Manager>.


Member Typedef Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::const_iterator
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Const_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::CONST_ITERATOR
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ENTRY
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::iterator
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ITERATOR
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef EXT_ID ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::KEY
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_LOCK ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::lock_type
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::reverse_iterator
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::REVERSE_ITERATOR
template<class EXT_ID, class INT_ID, class ACE_LOCK>
typedef INT_ID ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::VALUE

Member Enumeration Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
anonymous enum [protected]
Enumerator:
MAX_EXPONENTIAL 

Grow map exponentially up to 64K.

LINEAR_INCREASE 

Afterwards grow in chunks of 32K.


Constructor & Destructor Documentation

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Manager ( ACE_Allocator alloc = 0  )  [inline]

Initialize a ACE_Map_Manager with the ACE_DEFAULT_MAP_SIZE.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Manager ( size_t  size,
ACE_Allocator alloc = 0 
) [inline]

Initialize a ACE_Map_Manager with size entries.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::~ACE_Map_Manager ( void   )  [inline]

Close down a ACE_Map_Manager and release dynamically allocated resources.


Member Function Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_UNIMPLEMENTED_FUNC ( void  operator = (const ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK> &)  )  const [private]
template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK > ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::begin ( void   )  [inline]

Return forward iterator.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::bind ( const EXT_ID &  ext_id,
const INT_ID int_id 
) [inline]

Associate ext_id with int_id. If ext_id is already in the map then the ACE_Map_Entry is not changed.

Return values:
0 If a new entry is bound successfully.
1 If an attempt is made to bind an existing entry.
-1 If failures occur.
template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::bind_i ( const EXT_ID &  ext_id,
const INT_ID int_id 
) [inline, protected]

Performs the binding of ext_id to int_id. Must be called with locks held.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::close ( void   )  [inline]

Close down a ACE_Map_Manager and release dynamically allocated resources.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::close_i ( void   )  [inline, protected]

Close down a <Map_Manager>. Must be called with locks held.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
size_t ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::current_size ( void   )  const [inline]

Return the current size of the map.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::dump ( void   )  const [inline]

Dump the state of an object.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK > ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::end ( void   )  [inline]
template<class EXT_ID, class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::equal ( const EXT_ID &  id1,
const EXT_ID &  id2 
) [inline, protected]

Returns 1 if <id1> == <id2>, else 0. This is defined as a separate method to facilitate template specialization.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::find ( const EXT_ID &  ext_id  )  const [inline]

Returns 0 if the ext_id is in the mapping, otherwise -1.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::find ( const EXT_ID &  ext_id,
INT_ID int_id 
) const [inline]

Locate ext_id and pass out parameter via int_id.

Return values:
0 If found.
-1 If not found.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::find_and_return_index ( const EXT_ID &  ext_id,
ACE_UINT32 &  slot 
) [inline, protected]

Performs a find using ext_id as the key. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::find_i ( const EXT_ID &  ext_id,
INT_ID int_id 
) [inline, protected]

Performs a find of int_id using ext_id as the key. Must be called with locks held.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_UINT32 ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::free_list_id ( void   )  const [inline, protected]

Id of the free list sentinel.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::free_search_structure ( void   )  [inline, protected]

Explicitly call the destructors and free up the <search_structure_>.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::move_all_free_slots_from_occupied_list ( void   )  [protected]

In the case of lazy map managers, the movement of free slots from the occupied list to the free list is delayed until we run out of free slots in the free list. This function goes through the entire occupied list, moving free slots to the free list.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::move_from_free_list_to_occupied_list ( ACE_UINT32  slot  )  [inline, protected]

Move from free list to occupied list.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::move_from_occupied_list_to_free_list ( ACE_UINT32  slot  )  [inline, protected]

Move from occupied list to free list.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_LOCK & ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::mutex ( void   )  [inline]

Returns a reference to the underlying <ACE_LOCK>. This makes it possible to acquire the lock explicitly, which can be useful in some cases if you instantiate the ACE_Atomic_Op with an ACE_Recursive_Mutex or ACE_Process_Mutex, or if you need to guard the state of an iterator.

Note:
The right name would be <lock>, but HP/C++ will choke on that!
template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_UINT32 ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::new_size ( void   )  [inline, protected]

This function returns the new size of the Map Manager. This function is called when we run out of room and need to resize.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::next_free ( ACE_UINT32 &  slot  )  [inline, protected]

Finds the next free slot.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_UINT32 ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::occupied_list_id ( void   )  const [inline, protected]

Id of the occupied list sentinel.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::open ( size_t  length = ACE_DEFAULT_MAP_SIZE,
ACE_Allocator alloc = 0 
) [inline]
template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK > ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rbegin ( void   )  [inline]

Return reverse iterator.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rebind ( const EXT_ID &  ext_id,
const INT_ID int_id 
) [inline]

Reassociate ext_id with int_id. Old values in the map are ignored.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rebind ( const EXT_ID &  ext_id,
const INT_ID int_id,
INT_ID old_int_id 
) [inline]

Reassociate ext_id with int_id. If ext_id is not in the map then behaves just like <bind>. Otherwise, store the old values of int_id into the "out" parameter and rebind the new parameters.

Return values:
0 If a new entry is bound successfully.
1 If an existing entry was rebound.
-1 If failures occur.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rebind ( const EXT_ID &  ext_id,
const INT_ID int_id,
EXT_ID &  old_ext_id,
INT_ID old_int_id 
) [inline]

Reassociate ext_id with int_id. If ext_id is not in the map then behaves just like bind(). Otherwise, store the old values of ext_id and int_id into the "out" parameters and rebind the new parameters. This is very useful if you need to have an atomic way of updating <Map_Entries> and you also need full control over memory allocation.

Return values:
0 If a new entry is bound successfully.
1 If an existing entry was rebound.
-1 If failures occur.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rebind_i ( const EXT_ID &  ext_id,
const INT_ID int_id 
) [inline, protected]

Performs a rebinding of <ext_it> to int_id. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rebind_i ( const EXT_ID &  ext_id,
const INT_ID int_id,
INT_ID old_int_id 
) [inline, protected]

Performs a rebinding of <ext_it> to int_id. Also, recovers old values. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rebind_i ( const EXT_ID &  ext_id,
const INT_ID int_id,
EXT_ID &  old_ext_id,
INT_ID old_int_id 
) [inline, protected]

Performs a rebinding of <ext_it> to int_id. Also, recovers old values. Must be called with locks held.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK > ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::rend ( void   )  [inline]
template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::resize_i ( ACE_UINT32  size  )  [inline, protected]

Resize the map. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::shared_bind ( const EXT_ID &  ext_id,
const INT_ID int_id 
) [inline, protected]

Bind an entry (without finding first). Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::shared_move ( ACE_UINT32  slot,
ACE_Map_Entry< EXT_ID, INT_ID > &  current_list,
ACE_UINT32  current_list_id,
ACE_Map_Entry< EXT_ID, INT_ID > &  new_list,
ACE_UINT32  new_list_id 
) [inline, protected]

Move helper.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
size_t ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::total_size ( void   )  const [inline]

Return the total size of the map.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::trybind ( const EXT_ID &  ext_id,
INT_ID int_id 
) [inline]

Associate ext_id with int_id if and only if ext_id is not in the map. If ext_id is already in the map then the int_id parameter is overwritten with the existing value in the map

Return values:
0 If a new entry is bound successfully.
1 If an attempt is made to bind an existing entry.
-1 If failures occur.
template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::trybind_i ( const EXT_ID &  ext_id,
INT_ID int_id 
) [inline, protected]

Performs a conditional bind of int_id using ext_id as the key. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind ( const EXT_ID &  ext_id,
INT_ID int_id 
) [inline]

Break any association of ext_id. Returns the value of int_id in case the caller needs to deallocate memory. Returns 0 if successful, else -1.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind ( const EXT_ID &  ext_id  )  [inline]

Unbind (remove) the ext_id from the map. Don't return the int_id to the caller (this is useful for collections where the int_ids are *not* dynamically allocated...) Returns 0 if successful, else -1.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_all ( void   )  [inline]

Unbind all entires.

template<class EXT_ID, class INT_ID , class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_and_return_index ( const EXT_ID &  ext_id,
ACE_UINT32 &  slot 
) [inline, protected]

Performs an unbind using ext_id as the key. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_i ( const EXT_ID &  ext_id  )  [inline, protected]

Performs an unbind using ext_id as the key. Must be called with locks held.

template<class EXT_ID, class INT_ID, class ACE_LOCK >
int ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_i ( const EXT_ID &  ext_id,
INT_ID int_id 
) [inline, protected]

Performs an unbind of int_id using ext_id as the key. Must be called with locks held.

template<class EXT_ID , class INT_ID , class ACE_LOCK >
void ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::unbind_slot ( ACE_UINT32  slot  )  [inline, protected]

Unbind slot.


Friends And Related Function Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK > [friend]
template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > [friend]
template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK > [friend]
template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > [friend]
template<class EXT_ID, class INT_ID, class ACE_LOCK>
friend class ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK > [friend]

Member Data Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

Reimplemented in ACE_Active_Map_Manager< T >, and ACE_Active_Map_Manager< ACE_Pair< KEY, VALUE > >.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Allocator* ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::allocator_ [protected]

Pointer to a memory allocator.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_UINT32 ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::cur_size_ [protected]

Current size of the map.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::free_list_ [protected]

Free list.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::INT_ID [private]
template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_LOCK ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::lock_ [mutable, protected]

Synchronization variable for the MT_SAFE ACE_Map_Manager.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry<EXT_ID, INT_ID> ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::occupied_list_ [protected]

Occupied list.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry<EXT_ID, INT_ID>* ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::search_structure_ [protected]

Implement the Map as a resizeable array of ACE_Map_Entry.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_UINT32 ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK >::total_size_ [protected]

Total number of elements in this->search_structure_.


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

Generated on Mon Nov 30 00:52:30 2009 for ACE by  doxygen 1.6.1