ucc::MappedReuse Class Reference

Map a reusable allocator over a named shared memory segment. More...

#include <mapped.h>

Inheritance diagram for ucc::MappedReuse:

Inheritance graph
[legend]
Collaboration diagram for ucc::MappedReuse:

Collaboration graph
[legend]

Public Member Functions

 MappedReuse (char *name, size_t size, unsigned count)
 Construct a named memory segment for use with managed fixed size reusable objects.
bool avail (void)
 Check whether there are objects available to be allocated.
ReusableObjectrequest (void)
 Request a reusable object from the free list or mapped space.
ReusableObjectget (void)
 Request a reusable object from the free list or mapped space.
ReusableObjectgetTimed (timeout_t timeout)
 Request a reusable object from the free list or mapped space.
ReusableObjectgetLocked (void)
 Used to get an object from the reuse pool when the mutex lock is already held.
void removeLocked (ReusableObject *object)
 Used to return an object to the reuse pool when the mutex lock is already held.

Protected Member Functions

 MappedReuse (size_t osize)
void create (char *fname, unsigned count)

Detailed Description

Map a reusable allocator over a named shared memory segment.

This may be used to form a resource bound fixed size managed heap in shared memory. The request can either be fullfilled from the object reuse pool or from a new section of memory, and if all memory in the segment has been exhausted, it can wait until more objects are returned by another thread to the reuse pool.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 182 of file mapped.h.


Constructor & Destructor Documentation

ucc::MappedReuse::MappedReuse ( char *  name,
size_t  size,
unsigned  count 
)

Construct a named memory segment for use with managed fixed size reusable objects.

The segment is created as writable. There is no read-only version of mapped reuse since the mapped segment can be read by another process directly as a mapped read-only vector. The actual mapped type will be derived from ReusableObject to meet the needs of the reusable allocator. The templated version should be used to assure type correctness rather than using this class directly.

Parameters:
name of shared memory segment.
size of the object type being mapped.
count of the maximum number of active mapped objects.


Member Function Documentation

bool ucc::MappedReuse::avail ( void   ) 

Check whether there are objects available to be allocated.

Returns:
true if objects are available.

ReusableObject* ucc::MappedReuse::get ( void   ) 

Request a reusable object from the free list or mapped space.

This method blocks until an object becomes available.

Returns:
free object.

Reimplemented in ucc::mapped_reuse< T >.

ReusableObject* ucc::MappedReuse::getLocked ( void   ) 

Used to get an object from the reuse pool when the mutex lock is already held.

Returns:
object from pool or NULL if exhausted.

Reimplemented in ucc::mapped_reuse< T >.

ReusableObject* ucc::MappedReuse::getTimed ( timeout_t  timeout  ) 

Request a reusable object from the free list or mapped space.

This method blocks until an object becomes available or the timeout has expired.

Parameters:
timeout to wait in milliseconds.
Returns:
free object or NULL if timeout.

Reimplemented in ucc::mapped_reuse< T >.

void ucc::MappedReuse::removeLocked ( ReusableObject object  ) 

Used to return an object to the reuse pool when the mutex lock is already held.

Parameters:
object being returned.

ReusableObject* ucc::MappedReuse::request ( void   ) 

Request a reusable object from the free list or mapped space.

Returns:
free object or NULL if pool is exhausted.

Reimplemented in ucc::mapped_reuse< T >.


The documentation for this class was generated from the following file:

Generated on Mon Jul 27 21:11:22 2009 for UCommon by  doxygen 1.5.9