CoreLinux++  0.4.32
Public Member Functions | Protected Member Functions | List of all members
corelinux::GatewaySemaphoreGroup Class Reference

A GatewaySemaphoreGroup is an extension to the SemaphoreGroup for creating only GatewaySemaphore types. More...

#include <GatewaySemaphoreGroup.hpp>

Public Member Functions

 GatewaySemaphoreGroup (Short, Int Rights=OWNER_ALL) throw (Assertion,SemaphoreException)
 Default constructor creates a private group semaphores with access for OWNER_ALL. More...
 
 GatewaySemaphoreGroup (Short, SemaphoreGroupIdentifierCref, Int, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group with a specific identifier. More...
 
 GatewaySemaphoreGroup (Short, CharCptr aName, Int, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group by name. More...
 
virtual ~GatewaySemaphoreGroup (void)
 Virtual destructor.
 
virtual AbstractSemaphorePtr createSemaphore (void) throw ( SemaphoreException )
 Create a default GatewaySemaphore. More...
 
virtual AbstractSemaphorePtr createCountSemaphore (Count aCount) throw ( SemaphoreException )
 Create a count GatewaySemaphore. More...
 
virtual AbstractSemaphorePtr createSemaphore (SemaphoreIdentifierRef aIdentifier, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create or open (use) a specific GatewaySemphore. More...
 
virtual AbstractSemaphorePtr createCountSemaphore (SemaphoreIdentifierRef aIdentifier, Count aCount, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create or open (use) a specific GatewaySemphore and have it automatically initialized to the specified count. More...
 
virtual AbstractSemaphorePtr createSemaphore (std::string aName, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create or open (use) a specific GatewaySemphore. More...
 
virtual void destroySemaphore (AbstractSemaphorePtr) throw ( SemaphoreException )
 Destroys a created GatewaySemaphore. More...
 
- Public Member Functions inherited from corelinux::SemaphoreGroup
 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...
 
- Public Member Functions inherited from corelinux::Synchronized
 Synchronized (void)
 Default constructor.
 
 Synchronized (SynchronizedCref)
 Copy constructor.
 
virtual ~Synchronized (void)
 Virtual Destructor.
 
SynchronizedRef operator= (SynchronizedCref)
 Assignment operator.
 
bool operator== (SynchronizedCref) const
 Equality operator.
 

Protected Member Functions

 GatewaySemaphoreGroup (void) throw ( Assertion )
 Default constructor not allowed.
 
 GatewaySemaphoreGroup (GatewaySemaphoreGroupCref) throw ( Assertion )
 Copy constructor not allowed.
 
GatewaySemaphoreGroupRef operator= (GatewaySemaphoreGroupCref) throw ( Assertion )
 Assignment operator not allowed.
 
AbstractSemaphorePtr resolveSemaphore (SemaphoreIdentifierRef aIdentifier, Short aSemId, CreateDisposition aDisp, bool aRecurse, bool aBalk, Count aMaxValue=1) throw ( SemaphoreException )
 Protected method for resolving mutex between CSA and local.
 
- Protected Member Functions inherited from corelinux::SemaphoreGroup
 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
 Claim an unused semaphore from the group. More...
 
- Protected Member Functions inherited from corelinux::Synchronized
Guard access (void) const throw (SemaphoreException)
 Access returns a instance of Guard which is block scoped to the caller. More...
 

Additional Inherited Members

- Protected Types inherited from corelinux::Synchronized
typedef GuardGuardPtr
 
typedef const GuardGuardCptr
 
typedef GuardGuardRef
 
typedef const GuardGuardCref
 

Detailed Description

A GatewaySemaphoreGroup is an extension to the SemaphoreGroup for creating only GatewaySemaphore types.

Default behavior for creating semaphores via the SemaphoreGroup interface is to create a Gateway and initialize it to a count of two (2) Use the createCountSemaphore(...) interface to accomplish initializing the GatewaySemaphore to a count > 2.

Constructor & Destructor Documentation

§ GatewaySemaphoreGroup() [1/3]

corelinux::GatewaySemaphoreGroup::GatewaySemaphoreGroup ( Short  aSemCount,
Int  Rights = OWNER_ALL 
)
throw (Assertion,
SemaphoreException
)

Default constructor creates a private group semaphores with access for OWNER_ALL.

Parameters
ShortNumber of semaphores in group
AccessRightsSpecifies access control for group
Exceptions
Assertionif aCount < 1
SemaphoreExceptionif kernel group create call fails.
See also
AccessRights

References GatewaySemaphoreGroup().

§ GatewaySemaphoreGroup() [2/3]

corelinux::GatewaySemaphoreGroup::GatewaySemaphoreGroup ( 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
ShortNumber of semaphores in group, this only has meaning used if failOnExist = true
SemaphoreGroupIdentifiervalid group identifier either through a system call or via another ipc mechanism
AccessRightsSpecifies access control for group
CreateDispositionindicates 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
Assertionif aCount < 1
SemaphoreExceptionfor described states

References GatewaySemaphoreGroup().

§ GatewaySemaphoreGroup() [3/3]

corelinux::GatewaySemaphoreGroup::GatewaySemaphoreGroup ( 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
ShortNumber of semaphores in group, this only has meaning used if failOnExist = true
Charpointer to Group name
AccessRightsSpecifies access control for group
CreateDispositionindicates 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
Assertionif aCount < 1 or aCount > system defined maximum for group
SemaphoreExceptionfor described states

Member Function Documentation

§ createCountSemaphore() [1/2]

AbstractSemaphorePtr corelinux::GatewaySemaphoreGroup::createCountSemaphore ( Count  aCount)
throw (SemaphoreException
)
virtual

Create a count GatewaySemaphore.

Parameters
Countinitializing count for GatewaySemaphore
Returns
AbstractSemaphore aSem - pointer to created semaphore
Exceptions
SemaphoreExceptionif no sems left in group

References createSemaphore(), corelinux::DEFAULT_COUNT(), corelinux::FAIL_IF_EXISTS, and resolveSemaphore().

Referenced by createSemaphore().

§ createCountSemaphore() [2/2]

AbstractSemaphorePtr corelinux::GatewaySemaphoreGroup::createCountSemaphore ( SemaphoreIdentifierRef  aIdentifier,
Count  aCount,
CreateDisposition  disp = CREATE_OR_REUSE,
bool  Recursive = false,
bool  Balking = false 
)
throw (SemaphoreException
)
virtual

Create or open (use) a specific GatewaySemphore and have it automatically initialized to the specified count.

Parameters
SemaphoreIdentifieridentifies which semphore id to create or attempt to use
Countinitializing count for GatewaySemaphore
CreateDispositionindicates 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
Recursiveto allow same thread multiple locks
Balkingto allow the semaphore to balk
Returns
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions
SemaphoreExceptionif the disposition disagrees with the semaphore state, or if it is a erroneous identifier

References createSemaphore(), corelinux::DEFAULT_COUNT(), corelinux::ScalarIdentifier< ScalarType >::getScalar(), corelinux::SemaphoreGroup::getSemaphoreCount(), and resolveSemaphore().

§ createSemaphore() [1/3]

AbstractSemaphorePtr corelinux::GatewaySemaphoreGroup::createSemaphore ( void  )
throw (SemaphoreException
)
virtual

Create a default GatewaySemaphore.

Returns
AbstractSemaphore aSem - pointer to created semaphore
Exceptions
SemaphoreExceptionif no sems left in group

Implements corelinux::SemaphoreGroup.

References corelinux::DEFAULT_COUNT(), corelinux::FAIL_IF_EXISTS, and resolveSemaphore().

Referenced by createCountSemaphore().

§ createSemaphore() [2/3]

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

Create or open (use) a specific GatewaySemphore.

Parameters
SemaphoreIdentifieridentifies which semphore id to create or attempt to use
CreateDispositionindicates 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
Recursiveto allow same thread multiple locks
Balkingto allow the semaphore to balk
Returns
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions
SemaphoreExceptionif the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Implements corelinux::SemaphoreGroup.

References createCountSemaphore(), corelinux::DEFAULT_COUNT(), corelinux::ScalarIdentifier< ScalarType >::getScalar(), corelinux::SemaphoreGroup::getSemaphoreCount(), and resolveSemaphore().

§ createSemaphore() [3/3]

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

Create or open (use) a specific GatewaySemphore.

Parameters
stringidentifies which semphore id to create or attempt to use
CreateDispositionindicates 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
Recursiveto allow same thread multiple locks
Balkingto allow the semaphore to balk
Returns
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions
SemaphoreExceptionif the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Implements corelinux::SemaphoreGroup.

§ destroySemaphore()

void corelinux::GatewaySemaphoreGroup::destroySemaphore ( AbstractSemaphorePtr  aPtr)
throw (SemaphoreException
)
virtual

Destroys a created GatewaySemaphore.

Note
Reference counting is not enabled so applications should ensure that only one (1) destroy is called per semaphore.
Parameters
AbstractSemaphorepointer of semaphore to destroy
Exceptions
SemaphoreExceptionif semaphore does not belong to this group or if already destroyed.

Implements corelinux::SemaphoreGroup.

References corelinux::SemaphoreGroup::getIdentifier(), corelinux::SemaphoreCommon::relinquishSemaphore(), and resolveSemaphore().


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

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium