MembershipBookkeeping Class Reference
Generic RTP input queues.

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

`#include <iqueue.h>`

Inheritance diagram for MembershipBookkeeping:
[legend]
Collaboration diagram for MembershipBookkeeping:
[legend]

## 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 ()
Public Member Functions inherited from SyncSourceHandler
void * | getLink (const SyncSource &source) const
| This requires SyncSource - SyncSourceHandler friendship. More...
void | setLink (SyncSource &source, void *link)
void | setParticipant (SyncSource &source, Participant &p)
void | setState (SyncSource &source, SyncSource::State ns)
void | setSender (SyncSource &source, bool active)
void | setDataTransportPort (SyncSource &source, tpport_t p)
void | setControlTransportPort (SyncSource &source, tpport_t p)
void | setNetworkAddress (SyncSource &source, InetAddress addr)
Public Member Functions inherited from ParticipantHandler
void | setSDESItem (Participant *part, SDESItemType item, const std::string &val)
void | setPRIVPrefix (Participant *part, const std::string val)
Public Member Functions inherited from ApplicationHandler
void | addParticipant (RTPApplication &app, Participant &part)
void | removeParticipant (RTPApplication &app, RTPApplication::ParticipantLink *pl)
Public Member Functions inherited from ConflictHandler
ConflictingTransportAddress * | searchDataConflict (InetAddress na, tpport_t dtp)
ConflictingTransportAddress * | searchControlConflict (InetAddress na, tpport_t ctp)
void | updateConflict (ConflictingTransportAddress &ca)
void | addConflict (const InetAddress &na, tpport_t dtp, tpport_t ctp)

## 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. More...
virtual | ~MembershipBookkeeping ()
| Purges all RTPSource structures created during the session, as well as the hash table and the list of sources. More...
SyncSourceLink * | getLink (const SyncSource &source) const
bool | isMine (const SyncSource &source) const
| Get whether a synchronization source is recorded in this membership controller. More...
bool | isRegistered (uint32 ssrc)
| Returns whether there is already a synchronizacion source with "ssrc" SSRC identifier. More...
SyncSourceLink * | getSourceBySSRC (uint32 ssrc, bool &created)
| Get the description of a source by its `ssrc` identifier. More...
bool | BYESource (uint32 ssrc)
| Mark the source identified by `ssrc` as having sent a BYE packet. More...
bool | removeSource (uint32 ssrc)
| Remove the description of the source identified by `ssrc` More...
SyncSourceLink * | getFirst ()
SyncSourceLink * | getLast ()
uint32 | getMembersCount ()
void | setMembersCount (uint32 n)
uint32 | getSendersCount ()
Protected Member Functions inherited from SyncSourceHandler
| SyncSourceHandler ()
virtual | ~SyncSourceHandler ()
Protected Member Functions inherited from ParticipantHandler
| ParticipantHandler ()
virtual | ~ParticipantHandler ()
Protected Member Functions inherited from ApplicationHandler
| ApplicationHandler ()
virtual | ~ApplicationHandler ()
Protected Member Functions inherited from ConflictHandler
| ConflictHandler ()
virtual | ~ConflictHandler ()

## Static Protected Attributes

static const size_t | defaultMembersHashSize
static const uint32 | SEQNUMMOD

## Additional Inherited Members

Protected Attributes inherited from ConflictHandler
ConflictingTransportAddress * | firstConflict
ConflictingTransportAddress * | lastConflict

## 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 fedem.nosp@m.p@al.nosp@m.tern..nosp@m.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

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

## 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