corelinux::EventSemaphoreGroup Class Reference

A EventSemaphoreGroup is an extension to the SemaphoreGroup for creating only EventSemaphore types. More...

`#include <EventSemaphoreGroup.hpp>`

## Public Member Functions

| EventSemaphoreGroup (Short aSemCount, Int aRightSet=OWNER_ALL) throw (Assertion,SemaphoreException)
| Default constructor creates a private group semaphores with access for OWNER_ALL. More...
| EventSemaphoreGroup (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. More...
| EventSemaphoreGroup (Short aSemCount, CharCptr aName, Int aRightSet, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
| Constructor to open or create a semaphore group by name. More...
virtual | ~EventSemaphoreGroup (void)
| Virtual destructor.
virtual AbstractSemaphorePtr | createSemaphore (void) throw ( SemaphoreException )
| Create a default EventSemaphore. More...
virtual AbstractSemaphorePtr | createSemaphore (Counter aLimit) throw ( SemaphoreException )
| Create an EventSemaphore and set the maximum number of listeners allowed on this semaphore. 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 EventSemphore. More...
virtual AbstractSemaphorePtr | createSemaphore (SemaphoreIdentifierRef aIdentifier, Counter aLimit, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
| Create or open (use) a specific EventSemphore and set the maximum number of listeners 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 EventSemaphore identified by its name. More...
virtual AbstractSemaphorePtr | createSemaphore (std::string aName, Counter aLimit, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
| Create or open (use) a specific EventSemaphore. More...
virtual void | destroySemaphore (AbstractSemaphorePtr aPtr) throw ( SemaphoreException )
| Destroys a previously created EventSemaphore. 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

| EventSemaphoreGroup (void) throw ( Assertion )
| Default constructor not allowed.
| EventSemaphoreGroup (EventSemaphoreGroupCref) throw ( Assertion )
| Copy constructor not allowed.
EventSemaphoreGroupRef | operator= (EventSemaphoreGroupCref) throw ( Assertion )
AbstractSemaphorePtr | resolveSemaphore (SemaphoreIdentifierRef aIdentifier, Short aSemId, CreateDisposition aDisp, bool aRecurse, bool aBalk, Counter aMaxValue=1) throw ( SemaphoreException )
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 Guard * | GuardPtr
typedef const Guard * | GuardCptr
typedef Guard & | GuardRef
typedef const Guard & | GuardCref

## Detailed Description

A EventSemaphoreGroup is an extension to the SemaphoreGroup for creating only EventSemaphore types.

Default behavior for creating semaphores via the SemaphoreGroup interface is to create a Event and autolock it. There is no option for not autolocking it.

## Constructor & Destructor Documentation

corelinux::EventSemaphoreGroup::EventSemaphoreGroup | ( | Short | aSemCount,
|  | Int | aRightSet = `OWNER_ALL`
| ) |  |
throw | ( | Assertion,
|  | SemaphoreException
| ) |  |

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

Maximum limit of listeners will be set to "infinity"

Parameters

  aSemCount | Number of semaphores in group
  aRightSet | access control for group

Exceptions

  Assertion | if aSemCount < 1
  SemaphoreException | if kernel group create call fails.

See also
  AccessRights

References EventSemaphoreGroup().

corelinux::EventSemaphoreGroup::EventSemaphoreGroup | ( | 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.

Maximum limit of listeners will be set to "infinity".

Parameters

  aSemCount | Number of semaphores in group, this only has meaning used if failOnExist = true
  aGID | valid group identifier either through a system call or via another ipc mechanism
  aRightSet | Specifies access control for group

  dist

  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

References EventSemaphoreGroup().

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

Constructor to open or create a semaphore group by name.

Maximum limit of listeners is set to "infinity"

Parameters

  aSemCount | Short Number of semaphores in group, this only has meaning used if failOnExist = true
  aName | pointer to Group name
  aRightSet | specifies access control for group

  disp

  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

## Member Function Documentation

AbstractSemaphorePtr corelinux::EventSemaphoreGroup::createSemaphore | ( | void |  | ) |
throw | ( | SemaphoreException
| ) |  |

virtual

Create a default EventSemaphore.

Returns
  AbstractSemaphore aSem - pointer to created semaphore

Exceptions

  SemaphoreException | if no sems left in group

Implements corelinux::SemaphoreGroup.

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

Referenced by createSemaphore().

AbstractSemaphorePtr corelinux::EventSemaphoreGroup::createSemaphore | ( | Counter | aLimit | ) |
throw | ( | SemaphoreException
| ) |  |

virtual

Create an EventSemaphore and set the maximum number of listeners allowed on this semaphore.

Parameters

  aLimit | maximum number of listeners

Returns
  AbstractSemaphore aSem - pointer to created semaphore

Exceptions

  SemaphoreException | if no sems left in group

References createSemaphore(), and corelinux::FAIL_IF_EXISTS.

AbstractSemaphorePtr corelinux::EventSemaphoreGroup::createSemaphore | ( | SemaphoreIdentifierRef | aIdentifier,
|  | CreateDisposition | disp = `CREATE_OR_REUSE`,
|  | bool | Recursive = `false`,
|  | bool | Balking = `false`
| ) |  |
throw | ( | SemaphoreException
| ) |  |

virtual

Create or open (use) a specific EventSemphore.

Parameters

  aIdentifier | identifies which semphore id to create or attempt to use

  disp

  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
  Recursive | allow lock to recurse
  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

Implements corelinux::SemaphoreGroup.

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

AbstractSemaphorePtr corelinux::EventSemaphoreGroup::createSemaphore | ( | SemaphoreIdentifierRef | aIdentifier,
|  | Counter | aLimit,
|  | CreateDisposition | disp = `CREATE_OR_REUSE`,
|  | bool | Recursive = `false`,
|  | bool | Balking = `false`
| ) |  |
throw | ( | SemaphoreException
| ) |  |

virtual

Create or open (use) a specific EventSemphore and set the maximum number of listeners to the specified count.

Parameters

  aIdentifier | identifies which semphore id to create or attempt to use
  aLimit | maximum number of listeners for EventSemaphore

  disp

  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

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

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

virtual

Create or open (use) a specific EventSemaphore identified by its name.

Parameters

  aName | identifies which semphore id to create or attempt to use

  disp

  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

Implements corelinux::SemaphoreGroup.

References createSemaphore().

AbstractSemaphorePtr corelinux::EventSemaphoreGroup::createSemaphore | ( | std::string | aName,
|  | Counter | aLimit,
|  | CreateDisposition | disp = `CREATE_OR_REUSE`,
|  | bool | Recursive = `false`,
|  | bool | Balking = `false`
| ) |  |
throw | ( | SemaphoreException
| ) |  |

virtual

Create or open (use) a specific EventSemaphore.

Parameters

  aName | identifies which semphore id to create or attempt to use
  aLimit | maximum number of listeners for EventSemaphore

  disp

  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

void corelinux::EventSemaphoreGroup::destroySemaphore | ( | AbstractSemaphorePtr | aPtr | ) |
throw | ( | SemaphoreException
| ) |  |

virtual

Destroys a previously created EventSemaphore.

Parameters

  aPtr | pointer of semaphore to destroy

Exceptions

  SemaphoreException | if semaphore does not belong to this group or if already destroyed.

Implements corelinux::SemaphoreGroup.

References corelinux::Synchronized::access(), corelinux::FAIL_IF_EXISTS, corelinux::FAIL_IF_NOTEXISTS, corelinux::SemaphoreGroup::getIdentifier(), corelinux::SemaphoreGroup::getSemaphoreCount(), corelinux::SemaphoreCommon::obtainSemaphore(), and corelinux::SemaphoreCommon::relinquishSemaphore().

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

- EventSemaphoreGroup.hpp
- EventSemaphoreGroup.cpp

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