ccRTP
Classes | Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
MembershipBookkeeping Class Reference

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

#include <iqueue.h>

Inheritance diagram for MembershipBookkeeping:
Inheritance graph
[legend]
Collaboration diagram for MembershipBookkeeping:
Collaboration graph
[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
ConflictingTransportAddresssearchDataConflict (InetAddress na, tpport_t dtp)
 
ConflictingTransportAddresssearchControlConflict (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...
 
SyncSourceLinkgetLink (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...
 
SyncSourceLinkgetSourceBySSRC (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...
 
SyncSourceLinkgetFirst ()
 
SyncSourceLinkgetLast ()
 
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
ConflictingTransportAddressfirstConflict
 
ConflictingTransportAddresslastConflict
 

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
initialSizean estimation of how many participants the session will consist of.
virtual MembershipBookkeeping::~MembershipBookkeeping ( )
inlineprotectedvirtual

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 ( )
inlineprotected
SyncSourceLink* MembershipBookkeeping::getLast ( )
inlineprotected
SyncSourceLink* MembershipBookkeeping::getLink ( const SyncSource source) const
inlineprotected
uint32 MembershipBookkeeping::getMembersCount ( )
inlineprotected
uint32 MembershipBookkeeping::getSendersCount ( )
inlineprotected
SyncSourceLink* MembershipBookkeeping::getSourceBySSRC ( uint32  ssrc,
bool &  created 
)
protected

Get the description of a source by its ssrc identifier.

Parameters
ssrcSSRC identifier, in host order.
createdwhether a new source has been created.
Returns
Pointer to the SyncSource object identified by ssrc.
bool MembershipBookkeeping::isMine ( const SyncSource source) const
inlineprotected

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)
inlineprotected

Member Data Documentation

const size_t MembershipBookkeeping::defaultMembersHashSize
staticprotected
const uint32 MembershipBookkeeping::SEQNUMMOD
staticprotected

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