Share::SegmentHeader Class Reference
[Internal library classes]

Object placed at begin of each shared segment. More...

#include <SegmentHeader.h>

Collaboration diagram for Share::SegmentHeader:

Collaboration graph
[legend]
List of all members.

Public Types

typedef RelocPtr< char > TStringZ
 Pointer to zero-ended string.

Public Member Functions

 SegmentHeader (const char *name, size_t dataSize)
void * alloc (size_t size) throw (ShareException)
void free (void *addr) throw ()
size_t size ()
size_t available ()
void notifyAttach ()
void notifyDetach ()
int refCount ()
void unlink ()
bool isUnlinked ()
bool shouldBeDestroyed ()

Static Public Member Functions

static size_t sizeNeeded (const char *name, size_t dataSize)

Protected Attributes

TSegmentAllocator allocator_
 allocator
TSegmentRefCounter refCounter_
 reference counter
TStringZ mutexName_
 Pointer to mutex name (stored inside shared segment).
Mutex mutex_
 Mutex used to access members.

Detailed Description

Object placed at begin of each shared segment.

It takes care about allocating blocks inside shared segment and counting references to shared segment.

Note:
This class use Mutex to acces its members.

Definition at line 27 of file SegmentHeader.h.


Member Typedef Documentation

typedef RelocPtr<char> Share::SegmentHeader::TStringZ

Pointer to zero-ended string.

Definition at line 96 of file SegmentHeader.h.


Constructor & Destructor Documentation

Share::SegmentHeader::SegmentHeader ( const char *  name,
size_t  dataSize 
)

Parameters:
name Name of shared segment.
dataSize Desired size of memory for data inside shared segment.
Note:
Usable memory inside shared segment could be smaller due to free space fragmentation.


Member Function Documentation

static size_t Share::SegmentHeader::sizeNeeded ( const char *  name,
size_t  dataSize 
) [static]

Parameters:
name Name of shared segment.
dataSize Desired size of memory for data inside shared segment.
Note:
Usable memory inside shared segment could be smaller due to free space fragmentation.
Returns:
Return computed size of shred segment to allocate.

void* Share::SegmentHeader::alloc ( size_t  size  )  throw (ShareException)

Allocate block of memory inside shared segment. ShareException is thrown if not success.

Parameters:
size Desired size of block to allocate.
Returns:
Return local address of allocated block on success.
Exceptions:
ShareException Library-specific exception derived from std::bad_alloc

void Share::SegmentHeader::free ( void *  addr  )  throw ()

Free block of memory previously allocated by alloc() method.

Parameters:
addr Address of block returned by alloc() method.
Attention:
All attached application may crash if this method is called with invalid address as parameter

size_t Share::SegmentHeader::size (  ) 

Returns:
Return total size of memory for data inside shared segment.
Note:
Usable memory inside shared segment could be smaller due to free space fragmentation.

size_t Share::SegmentHeader::available (  ) 

Returns:
Return size of available memory for data inside shared segment.

void Share::SegmentHeader::notifyAttach (  ) 

Client attach notification. This increase reference count.

void Share::SegmentHeader::notifyDetach (  ) 

Client detach notification. This decrease reference count.

int Share::SegmentHeader::refCount (  ) 

Returns:
Return current count of references.

void Share::SegmentHeader::unlink (  ) 

Mark segment to be destroyed.

bool Share::SegmentHeader::isUnlinked (  ) 

Returns:
Return true if segment is marked to be destroyed.

bool Share::SegmentHeader::shouldBeDestroyed (  ) 

Returns:
Return true if segment should be destroyed. This means, segment is unlinked and references count is zero.


Member Data Documentation

TSegmentAllocator Share::SegmentHeader::allocator_ [protected]

allocator

Definition at line 102 of file SegmentHeader.h.

TSegmentRefCounter Share::SegmentHeader::refCounter_ [protected]

reference counter

Definition at line 107 of file SegmentHeader.h.

TStringZ Share::SegmentHeader::mutexName_ [protected]

Pointer to mutex name (stored inside shared segment).

Definition at line 112 of file SegmentHeader.h.

Mutex Share::SegmentHeader::mutex_ [protected]

Mutex used to access members.

Definition at line 117 of file SegmentHeader.h.


The documentation for this class was generated from the following file:
Generated on Sun Aug 26 17:43:02 2007 for ShareLibrary by  doxygen 1.5.2