MEMBERSHIPBOOKKEEPING_SYNCSOURCELINK(3)
๐ NAME ๐
MembershipBookkeeping::SyncSourceLink โ the synchronization source internal handler that lives inside the incoming packets queue ๐ซถ
okay bestie, real talk: this is Membership...cSourceLink(3) from the Library Functions Manual, and it's giving โจdeep RTP internalsโจ so grab a snack and let's go ๐
๐ธ SYNOPSIS ๐ธ
#include <iqueue.h>
๐ Public Member Functions ๐
SyncSourceLink (MembershipBookkeeping *m, SyncSource *s, IncomingRTPPktLink *fp=NULL, IncomingRTPPktLink *lp=NULL, SyncSourceLink *ps=NULL, SyncSourceLink *ns=NULL, SyncSourceLink *ncollis=NULL)~SyncSourceLink ()โ bestie listen, note it deletes the source ๐ญ so don't be out here double-freeing.MembershipBookkeeping * getMembership ()SyncSource * getSource ()โ hands you the synchronization source object this link object is holding info for ๐ซถIncomingRTPPktLink * getFirst ()โ the first RTP (data) packet in the queue of packets we got from this socket โญvoid setFirst (IncomingRTPPktLink *fp)IncomingRTPPktLink * getLast ()โ the last RTP (data) packet in the queue of packets we got from this socket ๐void setLast (IncomingRTPPktLink *lp)SyncSourceLink * getPrev ()โ the link object for the previous RTP source ๐void setPrev (SyncSourceLink *ps)SyncSourceLink * getNext ()โ the link object for the next RTP source โจvoid setNext (SyncSourceLink *ns)SyncSourceLink * getNextCollis ()โ the link object for the next RTP source in the hash table entry collision list ๐ yes, collisions are a whole thing.void setNextCollis (SyncSourceLink *ns)ConflictingTransportAddress * getPrevConflict () constvoid setPrevConflict (InetAddress &addr, tpport_t dataPort, tpport_t controlPort)โ get that conflicting address ๐ฉunsigned char * getSenderInfo ()void setSenderInfo (unsigned char *si)unsigned char * getReceiverInfo ()void setReceiverInfo (unsigned char *ri)timeval getLastPacketTime () consttimeval getLastRTCPPacketTime () consttimeval getLastRTCPSRTime () constuint32 getObservedPacketCount () constโ the total number of RTP packets we've received from this source, periodt ๐void incObservedPacketCount ()uint32 getObservedOctetCount () constโ the total number of payload octets we've received from this source ๐void incObservedOctetCount (uint32 n)uint16 getMaxSeqNum () constโ the highest valid sequence number received ๐void setMaxSeqNum (uint16 max)โ set the highest valid sequence number recived (yes, "recived", we don't fix the typo, we respect the lore) ๐uint32 getExtendedMaxSeqNum () constvoid setExtendedMaxSeqNum (uint32 seq)uint32 getCumulativePacketLost () constvoid setCumulativePacketLost (uint32 pl)uint8 getFractionLost () constvoid setFractionLost (uint8 fl)uint32 getLastPacketTransitTime ()void setLastPacketTransitTime (uint32 time)float getJitter () constvoid setJitter (float j)uint32 getInitialDataTimestamp () constvoid setInitialDataTimestamp (uint32 ts)timeval getInitialDataTime () constvoid setInitialDataTime (timeval it)bool getGoodbye ()โ mark this source as having sent a BYE control packet ๐bool getHello ()โ mark this source as having sent some packet ๐ซถuint32 getBadSeqNum () constvoid setBadSeqNum (uint32 seq)uint8 getProbation () constvoid setProbation (uint8 p)void decProbation ()bool isValid () constuint16 getBaseSeqNum () constvoid setBaseSeqNum (uint16 seqnum)uint32 getSeqNumAccum () constvoid incSeqNumAccum ()void initSequence (uint16 seqnum)โ start a brand new sequence of received packets ๐ฑvoid recordInsertion (const IncomingRTPPktLink &pl)โ record the insertion of an RTP packet from this source into the scheduled reception queue ๐void initStats ()void computeStats ()โ compute cumulative packet lost and the fraction of packets lost during the last reporting interval ๐งฎ
๐ Public Attributes ๐
MembershipBookkeeping * membershipSyncSource * sourceIncomingRTPPktLink * firstIncomingRTPPktLink * lastSyncSourceLink * prevSyncSourceLink * nextSyncSourceLink * nextCollisConflictingTransportAddress * prevConflictunsigned char * senderInfounsigned char * receiverInfotimeval lastPacketTimetimeval lastRTCPPacketTimetimeval lastRTCPSRTimeuint32 obsPacketCountuint32 obsOctetCountuint16 maxSeqNumuint32 extendedMaxSeqNumuint32 cumulativePacketLostuint8 fractionLostuint32 lastPacketTransitTimefloat jitteruint32 initialDataTimestamptimeval initialDataTimebool flaguint32 badSeqNumuint8 probationuint16 baseSeqNumuint32 expectedPrioruint32 receivedPrioruint32 seqNumAccum
๐ Static Public Attributes ๐
static const uint32 SEQNUMMOD
๐ฆ Detailed Description ๐ฆ
SyncSourceLink is the synchronization source internal handler within the incoming packets queue โจ
So here's the tea: incoming packets queue objects hold a hash table and a linked list of synchronization sources. For each one of those sources, there's also a linked list of incoming rtp packets, which are linked into an 'all incoming packets' list as well. SyncSourceLink objects hold all the data you need to keep these data estructures alive and thriving, plus source specific information and statistics for RTCP ๐
๐ Author ๐
Federico Montesino Pouzols fedemp@altern.org
๐ง Constructor & Destructor Documentation ๐ง
๐ MembershipBookkeeping::SyncSourceLink::SyncSourceLink ๐
MembershipBookkeeping::SyncSourceLink::SyncSourceLink (
MembershipBookkeeping * m,
SyncSource * s,
IncomingRTPPktLink * fp = NULL,
IncomingRTPPktLink * lp = NULL,
SyncSourceLink * ps = NULL,
SyncSourceLink * ns = NULL,
SyncSourceLink * ncollis = NULL
) [inline]
๐ญ MembershipBookkeeping::SyncSourceLink::~SyncSourceLink () ๐ญ
Note it deletes the source. fr fr, that's the whole note โ it deletes the source, so don't come crying later when your pointer's gone ๐
๐ Member Function Documentation ๐
Bestie, this is the getter-and-setter zone, and it's giving very thorough little bookkeeping goblin. Every function here belongs to MembershipBookkeeping::SyncSourceLink, so buckle up. ๐
void MembershipBookkeeping::SyncSourceLink::computeStats ()โ Compute cumulative packet lost and fraction of packets lost during the last reporting interval. ๐void MembershipBookkeeping::SyncSourceLink::decProbation () [inline]โ no description in the original, just an inline lil thing. ๐ซงuint32 MembershipBookkeeping::SyncSourceLink::getBadSeqNum () const [inline]uint16 MembershipBookkeeping::SyncSourceLink::getBaseSeqNum () const [inline]uint32 MembershipBookkeeping::SyncSourceLink::getCumulativePacketLost () const [inline]uint32 MembershipBookkeeping::SyncSourceLink::getExtendedMaxSeqNum () const [inline]IncomingRTPPktLink * MembershipBookkeeping::SyncSourceLink::getFirst () [inline]โ Get first RTP (data) packet in the queue of packets received from this socket. ๐ฅuint8 MembershipBookkeeping::SyncSourceLink::getFractionLost () const [inline]bool MembershipBookkeeping::SyncSourceLink::getGoodbye () [inline]โ Mark this source as having sent a BYE control packet.- Returns: whether some packet from this source had been received before (
getHello()has been called at least once). ๐
- Returns: whether some packet from this source had been received before (
bool MembershipBookkeeping::SyncSourceLink::getHello () [inline]โ Mark this source as having sent some packet.- Returns: whether no packet from this source had been received before. โจ
timeval MembershipBookkeeping::SyncSourceLink::getInitialDataTime () const [inline]uint32 MembershipBookkeeping::SyncSourceLink::getInitialDataTimestamp () const [inline]float MembershipBookkeeping::SyncSourceLink::getJitter () const [inline]IncomingRTPPktLink * MembershipBookkeeping::SyncSourceLink::getLast () [inline]โ Get last RTP (data) packet in the queue of packets received from this socket. ๐งธtimeval MembershipBookkeeping::SyncSourceLink::getLastPacketTime () const [inline]uint32 MembershipBookkeeping::SyncSourceLink::getLastPacketTransitTime () [inline]timeval MembershipBookkeeping::SyncSourceLink::getLastRTCPPacketTime () const [inline]timeval MembershipBookkeeping::SyncSourceLink::getLastRTCPSRTime () const [inline]uint16 MembershipBookkeeping::SyncSourceLink::getMaxSeqNum () const [inline]โ Get the highest valid sequence number received. ๐MembershipBookkeeping * MembershipBookkeeping::SyncSourceLink::getMembership () [inline]SyncSourceLink * MembershipBookkeeping::SyncSourceLink::getNext () [inline]โ Get the link object for the next RTP source. โก๏ธSyncSourceLink * MembershipBookkeeping::SyncSourceLink::getNextCollis () [inline]โ Get the link object for the next RTP source in the hash table entry collision list. Note that collision does not refer to SSRC collision, but hash table collision. ๐งuint32 MembershipBookkeeping::SyncSourceLink::getObservedOctetCount () const [inline]โ Get the total number of payload octets received from this source. ๐ขuint32 MembershipBookkeeping::SyncSourceLink::getObservedPacketCount () const [inline]โ Get the total number of RTP packets received from this source. ๐ฆSyncSourceLink * MembershipBookkeeping::SyncSourceLink::getPrev () [inline]โ Get the link object for the previous RTP source. โฌ ๏ธConflictingTransportAddress * MembershipBookkeeping::SyncSourceLink::getPrevConflict () const [inline]uint8 MembershipBookkeeping::SyncSourceLink::getProbation () const [inline]unsigned char * MembershipBookkeeping::SyncSourceLink::getReceiverInfo () [inline]unsigned char * MembershipBookkeeping::SyncSourceLink::getSenderInfo () [inline]uint32 MembershipBookkeeping::SyncSourceLink::getSeqNumAccum () const [inline]SyncSource * MembershipBookkeeping::SyncSourceLink::getSource () [inline]โ Get the synchronization source object this link objet holds information for. (Yes, "objet" is exactly what the original says, no cap. ๐)void MembershipBookkeeping::SyncSourceLink::incObservedOctetCount (uint32 n) [inline]void MembershipBookkeeping::SyncSourceLink::incObservedPacketCount () [inline]void MembershipBookkeeping::SyncSourceLink::incSeqNumAccum () [inline]void MembershipBookkeeping::SyncSourceLink::initSequence (uint16 seqnum) [inline]โ Start a new sequence of received packets. ๐ฑvoid MembershipBookkeeping::SyncSourceLink::initStats ()bool MembershipBookkeeping::SyncSourceLink::isValid () const [inline]void MembershipBookkeeping::SyncSourceLink::recordInsertion (const IncomingRTPPktLink & pl)โ Record the insertion of an RTP packet from this source into the scheduled reception queue. All received packets should be registered withrecordReception(), but only those actually inserted into the queue should be registered via this method.- Parameters:
plโ Link structure for packet inserted into the queue. ๐๏ธ
- Parameters:
void MembershipBookkeeping::SyncSourceLink::setBadSeqNum (uint32 seq) [inline]void MembershipBookkeeping::SyncSourceLink::setBaseSeqNum (uint16 seqnum) [inline]void MembershipBookkeeping::SyncSourceLink::setCumulativePacketLost (uint32 pl) [inline]void MembershipBookkeeping::SyncSourceLink::setExtendedMaxSeqNum (uint32 seq) [inline]void MembershipBookkeeping::SyncSourceLink::setFirst (IncomingRTPPktLink * fp) [inline]void MembershipBookkeeping::SyncSourceLink::setFractionLost (uint8 fl) [inline]void MembershipBookkeeping::SyncSourceLink::setInitialDataTime (timeval it) [inline]void MembershipBookkeeping::SyncSourceLink::setInitialDataTimestamp (uint32 ts) [inline]void MembershipBookkeeping::SyncSourceLink::setJitter (float j) [inline]void MembershipBookkeeping::SyncSourceLink::setLast (IncomingRTPPktLink * lp) [inline]void MembershipBookkeeping::SyncSourceLink::setLastPacketTransitTime (uint32 time) [inline]void MembershipBookkeeping::SyncSourceLink::setMaxSeqNum (uint16 max) [inline]โ Set the highest valid sequence number recived. (Again, original spelling, keep it iconic. ๐ )- Parameters:
maxโ Sequence number.
- Parameters:
void MembershipBookkeeping::SyncSourceLink::setNext (SyncSourceLink * ns) [inline]void MembershipBookkeeping::SyncSourceLink::setNextCollis (SyncSourceLink * ns) [inline]void MembershipBookkeeping::SyncSourceLink::setPrev (SyncSourceLink * ps) [inline]void MembershipBookkeeping::SyncSourceLink::setPrevConflict (InetAddress & addr, tpport_t dataPort, tpport_t controlPort)โ Get conflicting address. โ๏ธvoid MembershipBookkeeping::SyncSourceLink::setProbation (uint8 p) [inline]void MembershipBookkeeping::SyncSourceLink::setReceiverInfo (unsigned char * ri)void MembershipBookkeeping::SyncSourceLink::setSenderInfo (unsigned char * si)
๐ Member Data Documentation ๐
The data members are all just sitting here, being little fields, holding the vibes together. No extra descriptions in the original, so here's the exact roster, bestie. ๐ซถ
uint32 MembershipBookkeeping::SyncSourceLink::badSeqNumuint16 MembershipBookkeeping::SyncSourceLink::baseSeqNumuint32 MembershipBookkeeping::SyncSourceLink::cumulativePacketLostuint32 MembershipBookkeeping::SyncSourceLink::expectedPrioruint32 MembershipBookkeeping::SyncSourceLink::extendedMaxSeqNumIncomingRTPPktLink* MembershipBookkeeping::SyncSourceLink::firstbool MembershipBookkeeping::SyncSourceLink::flaguint8 MembershipBookkeeping::SyncSourceLink::fractionLosttimeval MembershipBookkeeping::SyncSourceLink::initialDataTimeuint32 MembershipBookkeeping::SyncSourceLink::initialDataTimestampfloat MembershipBookkeeping::SyncSourceLink::jitterIncomingRTPPktLink * MembershipBookkeeping::SyncSourceLink::lasttimeval MembershipBookkeeping::SyncSourceLink::lastPacketTimeuint32 MembershipBookkeeping::SyncSourceLink::lastPacketTransitTimetimeval MembershipBookkeeping::SyncSourceLink::lastRTCPPacketTimetimeval MembershipBookkeeping::SyncSourceLink::lastRTCPSRTimeuint16 MembershipBookkeeping::SyncSourceLink::maxSeqNumMembershipBookkeeping* MembershipBookkeeping::SyncSourceLink::membershipSyncSourceLink * MembershipBookkeeping::SyncSourceLink::nextSyncSourceLink* MembershipBookkeeping::SyncSourceLink::nextCollisuint32 MembershipBookkeeping::SyncSourceLink::obsOctetCountuint32 MembershipBookkeeping::SyncSourceLink::obsPacketCountSyncSourceLink* MembershipBookkeeping::SyncSourceLink::prevConflictingTransportAddress* MembershipBookkeeping::SyncSourceLink::prevConflictuint8 MembershipBookkeeping::SyncSourceLink::probationuint32 MembershipBookkeeping::SyncSourceLink::receivedPriorunsigned char* MembershipBookkeeping::SyncSourceLink::receiverInfounsigned char* MembershipBookkeeping::SyncSourceLink::senderInfouint32 MembershipBookkeeping::SyncSourceLink::seqNumAccumconst uint32 MembershipBookkeeping::SyncSourceLink::SEQNUMMOD [static]SyncSource* MembershipBookkeeping::SyncSourceLink::source
๐ Author ๐
Generated automatically by Doxygen for ccRTP from the source code. ๐คโจ
That's the whole page, bestie. Footer vibe check: ccRTP ยท Membership...cSourceLink(3) ยท and whatever date your local manpage stamped on it. ๐๐
๐ฆ where this page comes from
- debian trixie: libccrtp-doc 2.0.9-4.1 ยท GPL-2.0-or-later WITH MIF exception
- ubuntu noble: libccrtp-doc 2.0.9-2.5build1
- ubuntu questing: libccrtp-doc 2.0.9-4.1build1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms