OutgoingDataQueue(3)

πŸ“¦
version 2.0.9 Β· 4 versions
, in debian trixie, ubuntu noble, ubuntu questing

πŸ’– NAME πŸ’–

OutgoingDataQueue β€” a generic outgoing RTP data queue supporting multiple destinations. Yes bestie, it's OutgoingDataQueue(3), library functions manual energy, and it's giving network queue realness. ✨


🌸 SYNOPSIS 🌸

#include <oqueue.h>

Inherits OutgoingDataQueueBase, and DestinationListHandler.

Inherited by RTPDataQueue.

πŸŽ€ Classes πŸŽ€

  • struct OutgoingRTPPktLink

πŸ‘‘ Public Member Functions πŸ‘‘

  • bool addDestination (const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
  • bool addDestination (const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
  • bool forgetDestination (const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
  • bool forgetDestination (const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)
  • void addContributor (uint32 csrc) β€” add csrc as the CSRC identifier of a new contributor. slay.
  • bool removeContributor (uint32 csrc) β€” remove CSRC from the list of contributors.
  • bool isSending () const β€” determine if outgoing packets are waiting to send.
  • void putData (uint32 stamp, const unsigned char *data=NULL, size_t len=0) β€” this is used to create a data packet in the send queue.
  • void sendImmediate (uint32 stamp, const unsigned char *data=NULL, size_t len=0) β€” this is used to create a data packet and send it immediately.
  • void setPadding (uint8 paddinglen) β€” set padding.
  • void setMark (bool mark) β€” set marker bit for the packet in which the next data provided will be send.
  • bool getMark () const β€” get whether the mark bit will be set in the next packet.
  • size_t setPartial (uint32 timestamp, unsigned char *data, size_t offset, size_t max) β€” set partial data for an already queued packet.
  • microtimeout_t getDefaultSchedulingTimeout () const
  • void setSchedulingTimeout (microtimeout_t to) β€” set the default scheduling timeout to use when no data packets are waiting to be sent.
  • microtimeout_t getDefaultExpireTimeout () const
  • void setExpireTimeout (microtimeout_t to) β€” set the 'expired' timer for expiring packets pending in the send queue which have gone unsent and are already 'too late' to be sent now.
  • microtimeout_t getExpireTimeout () const
  • uint32 getSendPacketCount () const β€” get the total number of packets sent so far.
  • uint32 getSendOctetCount () const β€” get the total number of octets (payload only) sent so far.
  • uint16 getSequenceNumber () const β€” get the sequence number of the next outgoing packet.
  • void setOutQueueCryptoContext (CryptoContext *cc) β€” set output queue CryptoContext.
  • void removeOutQueueCryptoContext (CryptoContext *cc) β€” remove output queue CryptoContext.
  • CryptoContext * getOutQueueCryptoContext (uint32 ssrc) β€” get an output queue CryptoContext identified by SSRC.

🫢 Public Member Functions inherited from OutgoingDataQueueBase 🫢

  • size_t getDefaultMaxSendSegmentSize ()
  • void setMaxSendSegmentSize (size_t size) β€” set maximum payload segment size before fragmenting sends.
  • size_t getMaxSendSegmentSize ()

🌈 Public Member Functions inherited from RTPQueueBase 🌈

  • bool setPayloadFormat (const PayloadFormat &pf) β€” set the payload format in use, for timing and payload type identification purposes.
  • uint32 getLocalSSRC () const
  • uint32 getCurrentRTPClockRate () const β€” get the clock rate in RTP clock units (for instance, 8000 units per second for PCMU, or 90000 units per second for MP2T).
  • PayloadType getCurrentPayloadType () const
  • timeval getInitialTime () const

πŸ› οΈ Protected Member Functions πŸ› οΈ

  • OutgoingDataQueue ()
  • virtual ~OutgoingDataQueue ()
  • void dispatchImmediate (OutgoingRTPPkt *packet) β€” this is used to write the RTP data packet to one or more destinations.
  • microtimeout_t getSchedulingTimeout () β€” this computes the timeout period for scheduling transmission of the next packet at the 'head' of the send buffer.
  • size_t dispatchDataPacket () β€” this function is used by the service thread to process the next outgoing packet pending in the sending queue.
  • void setNextSeqNum (uint32 seqNum) β€” for thoses cases in which the application requires a method to set the sequence number for the outgoing stream (such as for implementing the RTSP PLAY command).
  • uint32 getCurrentSeqNum (void)
  • void setInitialTimestamp (uint32 ts)
  • uint32 getInitialTimestamp ()
  • void purgeOutgoingQueue ()
  • virtual void setControlPeer (const InetAddress &host, tpport_t port)

🧚 Protected Member Functions inherited from OutgoingDataQueueBase 🧚

  • OutgoingDataQueueBase ()
  • virtual ~OutgoingDataQueueBase ()

πŸ’œ Protected Member Functions inherited from RTPQueueBase πŸ’œ

  • RTPQueueBase (uint32 *ssrc=NULL)
  • void setLocalSSRC (uint32 ssrc)
  • uint32 getLocalSSRCNetwork () const
  • virtual ~RTPQueueBase ()
  • virtual size_t dispatchBYE (const std::string &) β€” a plugin point for posting of BYE messages.
  • virtual void renewLocalSSRC ()

πŸ“ Protected Member Functions inherited from DestinationListHandler πŸ“

  • void writeLockDestinationList () const
  • bool addDestinationToList (const InetAddress &ia, tpport_t data, tpport_t control) β€” locks the object before modifying it.
  • bool removeDestinationFromList (const InetAddress &ia, tpport_t dataPort, tpport_t controlPort) β€” locks the object before modifying it.
  • DestinationListHandler ()
  • ~DestinationListHandler ()
  • bool isSingleDestination () const β€” get whether there is only a destination in the list.
  • TransportAddress * getFirstDestination () const
  • void lockDestinationList () const
  • void unlockDestinationList () const

⭐ Protected Attributes ⭐

  • Mutex cryptoMutex
  • std::list< CryptoContext * > cryptoContexts

🌟 Protected Attributes inherited from DestinationListHandler 🌟

  • std::list< TransportAddress * > destList

πŸ“– Detailed Description πŸ“–

A generic outgoing RTP data queue supporting multiple destinations. That's the whole vibe. It's literally the description again, but make it make sense: this is the queue that handles outgoing RTP data and can send to more than one destination. No cap. πŸ’…

✨ Author ✨

Federico Montesino Pouzols fedemp@altern.org


πŸ› οΈ Constructor & Destructor Documentation πŸ› οΈ

OutgoingDataQueue::OutgoingDataQueue () [protected]

Protected constructor, bestie. It's giving internal setup only.

virtual OutgoingDataQueue::~OutgoingDataQueue () [inline], [protected], [virtual]

Inline, protected, virtual destructor. The whole trio. Periodt.

✨ MEMBER FUNCTION DOCUMENTATION ✨

okay bestie, this is the main character energy of the whole page πŸ’… Every single method, no skips. periodt.

  • void OutgoingDataQueue::addContributor (uint32 csrc) β€” Adds csrc as the CSRC identifier of a new contributor. This method adds the CSRC identifier to a list of contributors that will be inserted in every packet enqueued from now on. slay.
  • bool OutgoingDataQueue::addDestination (const InetHostAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)
    • Examples: audiorx.cpp, audiotx.cpp, rtphello.cpp, and rtpsend.cpp.
  • bool OutgoingDataQueue::addDestination (const InetMcastAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)
  • size_t OutgoingDataQueue::dispatchDataPacket () [protected] β€” This function is used by the service thread to process the next outgoing packet pending in the sending queue. the way it do be processing.
    • Returns: number of bytes sent. 0 if silent, <0 if error.
  • void OutgoingDataQueue::dispatchImmediate (OutgoingRTPPkt * packet) [protected] β€” This is used to write the RTP data packet to one or more destinations. It is used by both sendImmediate and by dispatchDataPacket.
    • Parameters: RTP packet to send.
  • bool OutgoingDataQueue::forgetDestination (const InetHostAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)
  • bool OutgoingDataQueue::forgetDestination (const InetMcastAddress & ia, tpport_t dataPort = DefaultRTPDataPort, tpport_t controlPort = 0)
  • uint32 OutgoingDataQueue::getCurrentSeqNum (void) [inline], [protected]
  • microtimeout_t OutgoingDataQueue::getDefaultExpireTimeout () const [inline]
  • microtimeout_t OutgoingDataQueue::getDefaultSchedulingTimeout () const [inline]
  • microtimeout_t OutgoingDataQueue::getExpireTimeout () const [inline]
  • uint32 OutgoingDataQueue::getInitialTimestamp () [inline], [protected]
  • bool OutgoingDataQueue::getMark () const [inline] β€” Get whether the mark bit will be set in the next packet. πŸ‘€
  • CryptoContext * OutgoingDataQueue::getOutQueueCryptoContext (uint32 ssrc) β€” Get an output queue CryptoContext identified by SSRC.
    • Parameters:
      • ssrc β€” Request CryptoContext for this incoming SSRC
    • Returns: Pointer to CryptoContext of the SSRC of NULL if no context available for this SSRC.
  • microtimeout_t OutgoingDataQueue::getSchedulingTimeout () [protected] β€” This computes the timeout period for scheduling transmission of the next packet at the 'head' of the send buffer. If no packets are waiting, a default timeout is used. This actually forms the 'isPending()' timeout of the rtp receiver in the service thread.
    • Returns: timeout until next packet is scheduled to send.
  • uint32 OutgoingDataQueue::getSendOctetCount () const [inline] β€” Get the total number of octets (payload only) sent so far.
    • Returns: total number of payload octets sent in RTP packets.
  • uint32 OutgoingDataQueue::getSendPacketCount () const [inline] β€” Get the total number of packets sent so far.
    • Returns: total number of packets sent
  • uint16 OutgoingDataQueue::getSequenceNumber () const [inline] β€” Get the sequence number of the next outgoing packet.
    • Returns: the 16 bit sequence number.
  • bool OutgoingDataQueue::isSending () const β€” Determine if outgoing packets are waiting to send.
    • Returns: true if there are packets waiting to be send.
  • void OutgoingDataQueue::purgeOutgoingQueue () [protected]
  • void OutgoingDataQueue::putData (uint32 stamp, const unsigned char * data = NULL, size_t len = 0) β€” This is used to create a data packet in the send queue. Sometimes a 'NULL' or empty packet will be used instead, and these are known as 'silent' packets. 'Silent' packets are used simply to 'push' the scheduler along more accurately by giving the appearance that a next packet is waiting to be sent and to provide a valid timestamp for that packet. the drama of silent packets.
    • Parameters:
      • stamp β€” Timestamp for expected send time of packet.
      • data β€” Value or NULL if special 'silent' packet.
      • len β€” May be 0 to indicate a default by payload type.
    • Examples: audiotx.cpp, ccrtptest.cpp, rtpduphello.cpp, rtphello.cpp, and rtpsend.cpp.
  • bool OutgoingDataQueue::removeContributor (uint32 csrc) β€” Remove CSRC from the list of contributors.
  • void OutgoingDataQueue::removeOutQueueCryptoContext (CryptoContext * cc) β€” Remove output queue CryptoContext. The endQueue method (provided by RTPQueue) also deletes all registered CryptoContexts.
    • Parameters:
      • cc β€” Pointer to initialized CryptoContext to remove.
  • void OutgoingDataQueue::sendImmediate (uint32 stamp, const unsigned char * data = NULL, size_t len = 0) β€” This is used to create a data packet and send it immediately. Sometimes a 'NULL' or empty packet will be used instead, and these are known as 'silent' packets. 'Silent' packets are used simply to 'push' the scheduler along more accurately by giving the appearance that a next packet is waiting to be sent and to provide a valid timestamp for that packet.
    • Parameters:
      • stamp β€” Timestamp immediate send time of packet.
      • data β€” Value or NULL if special 'silent' packet.
      • len β€” May be 0 to indicate a default by payload type.
  • virtual void OutgoingDataQueue::setControlPeer (const InetAddress & host, tpport_t port) [inline], [protected], [virtual]
    • Reimplemented in RTPDuplex, TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >, and TRTPSessionBase< DualRTPUDPIPv4Channel, DualRTPUDPIPv4Channel, AVPQueue >.
  • void OutgoingDataQueue::setExpireTimeout (microtimeout_t to) [inline] β€” Set the 'expired' timer for expiring packets pending in the send queue which have gone unsent and are already 'too late' to be sent now.
    • Parameters:
      • to β€” timeout to expire unsent packets in milliseconds.
    • Examples: ccrtptest.cpp, rtpduphello.cpp, rtphello.cpp, rtplisten.cpp, and rtpsend.cpp.
  • void OutgoingDataQueue::setInitialTimestamp (uint32 ts) [inline], [protected]
  • void OutgoingDataQueue::setMark (bool mark) [inline] β€” Set marker bit for the packet in which the next data provided will be send. When transmitting audio, should be set for the first packet of a talk spurt. When transmitting video, should be set for the last packet for a video frame. marker bit era.
    • Parameters:
      • mark β€” Marker bit value for next packet.
  • void OutgoingDataQueue::setNextSeqNum (uint32 seqNum) [inline], [protected] β€” For thoses cases in which the application requires a method to set the sequence number for the outgoing stream (such as for implementing the RTSP PLAY command). iykyk.
    • Parameters:
      • seqNum β€” next sequence number to be used for outgoing packets.
  • void OutgoingDataQueue::setOutQueueCryptoContext (CryptoContext * cc) β€” Set output queue CryptoContext. The endQueue method (provided by RTPQueue) deletes all registered CryptoContexts.
    • Parameters:
      • cc β€” Pointer to initialized CryptoContext.
  • void OutgoingDataQueue::setPadding (uint8 paddinglen) [inline] β€” Set padding. All outgoing packets will be transparently padded to a multiple of paddinglen.
    • Parameters:
      • paddinglen β€” pad packets to a length multiple of paddinglen.
  • size_t OutgoingDataQueue::setPartial (uint32 timestamp, unsigned char * data, size_t offset, size_t max) β€” Set partial data for an already queued packet. This is often used for multichannel data.
    • Parameters:
      • timestamp β€” Timestamp of packet.
      • data β€” Buffer to copy from.
      • offset β€” Offset to copy from.
      • max β€” Maximum data size.
    • Returns: Number of packet data bytes set.
  • void OutgoingDataQueue::setSchedulingTimeout (microtimeout_t to) [inline] β€” Set the default scheduling timeout to use when no data packets are waiting to be sent.
    • Parameters:
      • to β€” timeout in milliseconds.
    • Examples: audiorx.cpp, audiotx.cpp, ccrtptest.cpp, rtpduphello.cpp, rtphello.cpp, and rtpsend.cpp.

✨ MEMBER DATA DOCUMENTATION ✨

the data members, just vibing πŸ¦‹

  • bool OutgoingDataQueue::complete
  • std::list<CryptoContext *> OutgoingDataQueue::cryptoContexts [protected]
  • Mutex OutgoingDataQueue::cryptoMutex [mutable], [protected]
  • bool OutgoingDataQueue::marked
  • uint32 OutgoingDataQueue::octetCount
  • timeval OutgoingDataQueue::overflowTime
  • uint32 OutgoingDataQueue::packetCount
  • uint8 OutgoingDataQueue::paddinglen
  • uint16 OutgoingDataQueue::sendCC
  • uint16 OutgoingDataQueue::sendSeq
  • uint32 OutgoingDataQueue::sendSources[16]

πŸ’– AUTHOR πŸ’–

Generated automatically by Doxygen for ccRTP from the source code.


and that's the whole thing, bestie πŸ’– No cap, we kept every single detail. ccRTP β€’ OutgoingDataQueue(3) β€” catch u later βœ¨πŸ¦‹

πŸ“¦ where this page comes from