# MembershipBookkeeping Class Reference
[Generic RTP input queues.]

Controls the group membership in the current session. More...

`#include <iqueue.h>`

Inheritance diagram for MembershipBookkeeping:

List of all members.

## Classes

struct | IncomingRTPPktLink
| Incoming RTP data packets control structure within the incoming packet queue class. More...
struct | SyncSourceLink
| Synchronization Source internal handler within the incoming packets queue. More...

## Public Member Functions

size_t | getDefaultMembersHashSize ()

## Protected Member Functions

| MembershipBookkeeping (uint32 initialSize=defaultMembersHashSize)
| The initial size is a hint to allocate the resources needed in order to keep the members' identifiers and associated information.
virtual | ~MembershipBookkeeping ()
| Purges all RTPSource structures created during the session, as well as the hash table and the list of sources.
SyncSourceLink * | getLink (const SyncSource &source) const
bool | isMine (const SyncSource &source) const
| Get whether a synchronization source is recorded in this membership controller.
bool | isRegistered (uint32 ssrc)
| Returns whether there is already a synchronizacion source with "ssrc" SSRC identifier.
SyncSourceLink * | getSourceBySSRC (uint32 ssrc, bool &created)
| Get the description of a source by its `ssrc` identifier.
bool | BYESource (uint32 ssrc)
| Mark the source identified by `ssrc` as having sent a BYE packet.
bool | removeSource (uint32 ssrc)
| Remove the description of the source identified by `ssrc`
SyncSourceLink * | getFirst ()
SyncSourceLink * | getLast ()
uint32 | getMembersCount ()
void | setMembersCount (uint32 n)
uint32 | getSendersCount ()

## Static Protected Attributes

static const size_t | defaultMembersHashSize
static const uint32 | SEQNUMMOD

## Detailed Description

Controls the group membership in the current session.

For now, this class implements only a hash table of members, but its design and relation with other classes is intented to support group membership sampling in case scalability problems arise.

Author:
  Federico Montesino Pouzols <fedemp@altern.org>

## Constructor & Destructor Documentation

MembershipBookkeeping::MembershipBookkeeping | ( | uint32 | initialSize = `defaultMembersHashSize` ) | `[protected]`

The initial size is a hint to allocate the resources needed in order to keep the members' identifiers and associated information.

Although ccRTP will reallocate resources when it becomes necessary, a good hint may save a lot of unpredictable time penalties.

Parameters:

  initialSize | an estimation of how many participants the session will consist of.

virtual MembershipBookkeeping::~MembershipBookkeeping | ( | ) | `[inline, protected, virtual]`

Purges all RTPSource structures created during the session, as well as the hash table and the list of sources.

## Member Function Documentation

bool MembershipBookkeeping::BYESource | ( | uint32 | ssrc ) | `[protected]`

Mark the source identified by `ssrc` as having sent a BYE packet.

It is not deleted until a timeout expires, so that in case some packets from this source arrive a bit later the source is not inserted again in the table of known sources.

Returns:
  true if the source had been previously identified. false if it was not in the table of known sources.

size_t MembershipBookkeeping::getDefaultMembersHashSize | ( | ) | `[inline]`

SyncSourceLink* MembershipBookkeeping::getFirst | ( | ) | `[inline, protected]`

SyncSourceLink* MembershipBookkeeping::getLast | ( | ) | `[inline, protected]`

SyncSourceLink* MembershipBookkeeping::getLink | ( | const SyncSource & | source ) | const`[inline, protected]`

Reimplemented from SyncSourceHandler.

uint32 MembershipBookkeeping::getMembersCount | ( | ) | `[inline, protected]`

uint32 MembershipBookkeeping::getSendersCount | ( | ) | `[inline, protected]`

SyncSourceLink* MembershipBookkeeping::getSourceBySSRC | ( | uint32 | ssrc,
|  | bool & | created
| ) |  | `[protected]`

Get the description of a source by its `ssrc` identifier.

Parameters:

  ssrc | SSRC identifier, in host order.
  created | whether a new source has been created.

Returns:
  Pointer to the SyncSource object identified by `ssrc`.

bool MembershipBookkeeping::isMine | ( | const SyncSource & | source ) | const`[inline, protected]`

Get whether a synchronization source is recorded in this membership controller.

bool MembershipBookkeeping::isRegistered | ( | uint32 | ssrc ) | `[protected]`

Returns whether there is already a synchronizacion source with "ssrc" SSRC identifier.

bool MembershipBookkeeping::removeSource | ( | uint32 | ssrc ) | `[protected]`

Remove the description of the source identified by `ssrc`

Returns:
  whether the source has been actually removed or it did not exist.

void MembershipBookkeeping::setMembersCount | ( | uint32 | n ) | `[inline, protected]`

Reimplemented from Members.

## Member Data Documentation

const size_t MembershipBookkeeping::defaultMembersHashSize `[static, protected]`

const uint32 MembershipBookkeeping::SEQNUMMOD `[static, protected]`

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

- iqueue.h