Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

corelinux::SemaphoreGroup Class Reference

A SemaphoreGroup is an extension to the Linux semaphore set. More...

#include <SemaphoreGroup.hpp>

Inheritance diagram for corelinux::SemaphoreGroup

Inheritance graph
[legend]
Collaboration diagram for corelinux::SemaphoreGroup:

Collaboration graph
[legend]
List of all members.

Public Methods

 SemaphoreGroup ( Short , Int Rights = OWNER_ALL ) throw (Assertion,SemaphoreException)
 Default constructor creates a private group semaphores. More...

 SemaphoreGroup ( Short, SemaphoreGroupIdentifierCref, Int , CreateDisposition disp=FAIL_IF_EXISTS ) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group with a specific identifier. More...

 SemaphoreGroup ( Short, CharCptr, Int , CreateDisposition disp=FAIL_IF_EXISTS ) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group by name. More...

virtual ~SemaphoreGroup ( void )
 Virtual destructor.

bool operator== ( SemaphoreGroupCref ) const
 Equality operator compares the identifier. More...

Short getSemaphoreCount ( void ) const
 Return the number of semaphores in the group. More...

SemaphoreGroupIdentifierCref getIdentifier ( void ) const
 Return the SemaphoreGroupIdentifier. More...

virtual AbstractSemaphorePtr createSemaphore ( void ) = 0 throw ( SemaphoreException )
 Create a default semaphore type from group. More...

virtual AbstractSemaphorePtr createSemaphore ( SemaphoreIdentifierRef aIdentifier, CreateDisposition disp = CREATE_OR_REUSE, bool Recursive=false, bool Balking = false ) = 0 throw ( SemaphoreException )
 Create or open (use) a specific semphore in the group. More...

virtual AbstractSemaphorePtr createSemaphore ( std::string aName, CreateDisposition disp = CREATE_OR_REUSE, bool Recursive=false, bool Balking = false ) = 0 throw ( SemaphoreException )
 Create or open (use) a specific semphore in the group. More...

virtual void destroySemaphore ( AbstractSemaphorePtr ) = 0 throw ( SemaphoreException )
 Destroys a created semaphore from this group. More...


Protected Methods

 SemaphoreGroup ( void ) throw ( Assertion )
 Default constructor not allowed.

 SemaphoreGroup ( SemaphoreGroupCref ) throw ( Assertion )
 Copy constructor not allowed.

SemaphoreGroupRef operator= ( SemaphoreGroupCref ) throw ( Assertion )
 Assignment operator not allowed.

void setGroupType ( IntCref ) const
 This indirects to CSA for non-private group types. More...

bool isPrivate ( void ) const
 Internal check for creation visibility. More...


Friends

class  SemaphoreCommon

Detailed Description

A SemaphoreGroup is an extension to the Linux semaphore set.

This provides a way to logically group semaphores. A SemaphoreGroup acts as a Semaphore factory, creating and destroying Semaphores for the user.


Constructor & Destructor Documentation

corelinux::SemaphoreGroup::SemaphoreGroup ( Short aSemCount,
Int aRightSet = OWNER_ALL ) throw (Assertion,SemaphoreException)
 

Default constructor creates a private group semaphores.

Parameters:
Short   Number of semaphores in group
AccessRights   Specifies access control for group, default is owner only.
Exceptions:
Assertion   if aCount < 1
SemaphoreException   if kernel group create call fails.
See also:
corelinux::AccessRights

corelinux::SemaphoreGroup::SemaphoreGroup ( Short aSemCount,
SemaphoreGroupIdentifierCref aGID,
Int aRightSet,
CreateDisposition disp = FAIL_IF_EXISTS ) throw (Assertion,SemaphoreException)
 

Constructor to open or create a semaphore group with a specific identifier.

Parameters:
Short   Number of semaphores in group, this only has meaning used if failOnExist = true
SemaphoreGroupIdentifier   valid group identifier either through a system call or via another ipc mechanism
AccessRights   Specifies access control for group
CreateDisposition   indicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Exceptions:
Assertion   if aCount < 1
SemaphoreException   for described states
See also:
corelinux::AccessRights

corelinux::SemaphoreGroup::SemaphoreGroup ( Short aSemCount,
CharCptr aName,
Int aRightSet,
CreateDisposition disp = FAIL_IF_EXISTS ) throw (Assertion,SemaphoreException)
 

Constructor to open or create a semaphore group by name.

Parameters:
Short   Number of semaphores in group, this only has meaning used if failOnExist = true
Char   pointer to Group name
AccessRights   Specifies access control for group
CreateDisposition   indicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Exceptions:
Assertion   if aCount < 1 or aCount > system defined maximum for group
SemaphoreException   for described states
See also:
corelinux::AccessRights


Member Function Documentation

AbstractSemaphorePtr corelinux::SemaphoreGroup::createSemaphore ( std::string aName,
CreateDisposition disp = CREATE_OR_REUSE,
bool Recursive = false,
bool Balking = false ) throw ( SemaphoreException ) [pure virtual]
 

Create or open (use) a specific semphore in the group.

Parameters:
string   identifies which semphore id to create or attempt to use
CreateDisposition   indicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Recursive   to allow same thread multiple locks
Balking   to allow the semaphore to balk
Returns:
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions:
SemaphoreException   if the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Reimplemented in corelinux::CoreLinuxGuardGroup, corelinux::GatewaySemaphoreGroup, and corelinux::MutexSemaphoreGroup.

AbstractSemaphorePtr corelinux::SemaphoreGroup::createSemaphore ( SemaphoreIdentifierRef aIdentifier,
CreateDisposition disp = CREATE_OR_REUSE,
bool Recursive = false,
bool Balking = false ) throw ( SemaphoreException ) [pure virtual]
 

Create or open (use) a specific semphore in the group.

Parameters:
SemaphoreIdentifier   identifies which semphore id to create or attempt to use
CreateDisposition   indicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Recursive   to allow same thread multiple locks
Balking   to allow the semaphore to balk
Returns:
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions:
SemaphoreException   if the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Reimplemented in corelinux::CoreLinuxGuardGroup, corelinux::GatewaySemaphoreGroup, and corelinux::MutexSemaphoreGroup.

AbstractSemaphorePtr corelinux::SemaphoreGroup::createSemaphore ( void ) throw ( SemaphoreException ) [pure virtual]
 

Create a default semaphore type from group.

Returns:
AbstractSemaphore aSem - pointer to created semaphore
Exceptions:
SemaphoreException   if no sems left in group

Reimplemented in corelinux::CoreLinuxGuardGroup, corelinux::GatewaySemaphoreGroup, and corelinux::MutexSemaphoreGroup.

void corelinux::SemaphoreGroup::destroySemaphore ( AbstractSemaphorePtr aPtr ) throw ( SemaphoreException ) [pure virtual]
 

Destroys a created semaphore from this group.

Parameters:
AbstractSemaphore   pointer of semaphore to destroy
Exceptions:
SemaphoreException   if semaphore does not belong to this group

Reimplemented in corelinux::CoreLinuxGuardGroup, corelinux::GatewaySemaphoreGroup, and corelinux::MutexSemaphoreGroup.

SemaphoreGroupIdentifierCref corelinux::SemaphoreGroup::getIdentifier ( void ) const [inline]
 

Return the SemaphoreGroupIdentifier.

Returns:
SemaphoreGroupIdentifier

Short corelinux::SemaphoreGroup::getSemaphoreCount ( void ) const
 

Return the number of semaphores in the group.

Returns:
Short Count

bool corelinux::SemaphoreGroup::isPrivate ( void ) const [inline, protected]
 

Internal check for creation visibility.

This implies that even though the group may be shared, the user has elected to use privately.

bool corelinux::SemaphoreGroup::operator== ( SemaphoreGroupCref aSemGroupRef ) const
 

Equality operator compares the identifier.

Parameters:
SemaphoreGroup   a reference to SemaphoreGroup
Returns:
bool True if equal

void corelinux::SemaphoreGroup::setGroupType ( IntCref ) const [protected]
 

This indirects to CSA for non-private group types.

Parameters:
Int   reference to type where 0 = Mutex, 1 = Gateway, 2 = Event, 3-10 reserved. Anything greater than 10 is user defined.


The documentation for this class was generated from the following files:
This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium