Bayonne2 / Common C++ 2 Framework
Data Structures | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
OutgoingDataQueue Class Reference
Generic RTP output queues.

A generic outgoing RTP data queue supporting multiple destinations. More...

#include <oqueue.h>

Inheritance diagram for OutgoingDataQueue:
Inheritance graph
[legend]
Collaboration diagram for OutgoingDataQueue:
Collaboration graph
[legend]

Data Structures

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. More...
 
bool  removeContributor (uint32 csrc)
  Remove CSRC from the list of contributors. More...
 
bool  isSending () const
  Determine if outgoing packets are waiting to send. More...
 
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. More...
 
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. More...
 
void  setPadding (uint8 paddinglen)
  Set padding. More...
 
void  setMark (bool mark)
  Set marker bit for the packet in which the next data provided will be send. More...
 
bool  getMark () const
  Get wheter the mark bit will be set in the next packet. More...
 
size_t  setPartial (uint32 timestamp, unsigned char *data, size_t offset, size_t max)
  Set partial data for an already queued packet. More...
 
 
  Set the default scheduling timeout to use when no data packets are waiting to be sent. More...
 
 
  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. More...
 
 
uint32  getSendPacketCount () const
  Get the total number of packets sent so far. More...
 
uint32  getSendOctetCount () const
  Get the total number of octets (payload only) sent so far. More...
 
uint16  getSequenceNumber () const
  Get the sequence number of the next outgoing packet. More...
 
  Set ouput queue CryptoContext. More...
 
  Remove output queue CryptoContext. More...
 
  Get an output queue CryptoContext identified by SSRC. More...
 
 
void  setMaxSendSegmentSize (size_t size)
  Set maximum payload segment size before fragmenting sends. More...
 
 
bool  setPayloadFormat (const PayloadFormat &pf)
  Set the payload format in use, for timing and payload type identification purposes. More...
 
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). More...
 
 
timeval  getInitialTime () const
 

Protected Member Functions

 
virtual  ~OutgoingDataQueue ()
 
  This is used to write the RTP data packet to one or more destinations. More...
 
  This computes the timeout period for scheduling transmission of the next packet at the "head" of the send buffer. More...
 
size_t  dispatchDataPacket ()
  This function is used by the service thread to process the next outgoing packet pending in the sending queue. More...
 
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). More...
 
uint32  getCurrentSeqNum (void)
 
void  setInitialTimestamp (uint32 ts)
 
uint32  getInitialTimestamp ()
 
 
virtual void  setControlPeer (const InetAddress &host, tpport_t port)
 
void  setLocalSSRC (uint32 ssrc)
 
uint32  getLocalSSRCNetwork () const
 
virtual size_t  dispatchBYE (const std::string &)
  A plugin point for posting of BYE messages. More...
 
virtual void  renewLocalSSRC ()
 
bool  isSingleDestination () const
  Get whether there is only a destination in the list. More...
 
 
void  lockDestinationList () const
 
void  unlockDestinationList () const
 
void  writeLockDestinationList () const
 
bool  addDestinationToList (const InetAddress &ia, tpport_t data, tpport_t control)
  Locks the object before modifying it. More...
 
bool  removeDestinationFromList (const InetAddress &ia, tpport_t dataPort, tpport_t controlPort)
  Locks the object before modifying it. More...
 

Protected Attributes

 
std::list< CryptoContext * >  cryptoContexts
 
std::list< TransportAddress * >  destList
 

Private Member Functions

virtual void  onExpireSend (OutgoingRTPPkt &)
  A hook to filter packets being sent that have been expired. More...
 
virtual void  setDataPeer (const InetAddress &host, tpport_t port)
 
virtual size_t  sendData (const unsigned char *const buffer, size_t len)
  This function performs the physical I/O for writing a packet to the destination. More...
 

Private Attributes

 
 
 
uint32  initialTimestamp
 
 
 
struct {
   uint32   packetCount
 
   uint32   octetCount
 
   uint16   sendSeq
 
   uint32   sendSources [16]
 
   uint16   sendCC
 
   uint8   paddinglen
 
   bool   marked
 
   bool   complete
 
   uint32   initialTimestamp
 
   timeval   overflowTime
 
sendInfo
 

Static Private Attributes

 
 

Detailed Description

A generic outgoing RTP data queue supporting multiple destinations.

Author
Federico Montesino Pouzols fedem.nosp@m.p@al.nosp@m.tern..nosp@m.org

Definition at line 222 of file oqueue.h.

Constructor & Destructor Documentation

OutgoingDataQueue::OutgoingDataQueue ( )
protected
virtual OutgoingDataQueue::~OutgoingDataQueue ( )
inlineprotectedvirtual

Definition at line 451 of file oqueue.h.

Member Function Documentation

void OutgoingDataQueue::addContributor ( uint32  csrc )

Add 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.

bool OutgoingDataQueue::addDestination ( const InetHostAddressia,
tpport_t  dataPort = DefaultRTPDataPort ,
tpport_t  controlPort = 0 
)
bool OutgoingDataQueue::addDestination ( const InetMcastAddressia,
tpport_t  dataPort = DefaultRTPDataPort ,
tpport_t  controlPort = 0 
)
bool DestinationListHandler::addDestinationToList ( const InetAddressia,
tpport_t  data,
tpport_t  control 
)
protectedinherited

Locks the object before modifying it.

virtual size_t RTPQueueBase::dispatchBYE ( const std::string &  )
inlineprotectedvirtualinherited

A plugin point for posting of BYE messages.

Parameters
- reason to leave the RTP session.
Returns
number of octets sent.

Reimplemented in QueueRTCPManager.

Definition at line 231 of file queuebase.h.

size_t OutgoingDataQueue::dispatchDataPacket ( )
protected

This function is used by the service thread to process the next outgoing packet pending in the sending queue.

Returns
number of bytes sent. 0 if silent, <0 if error.
void OutgoingDataQueue::dispatchImmediate ( OutgoingRTPPktpacket )
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 InetHostAddressia,
tpport_t  dataPort = DefaultRTPDataPort ,
tpport_t  controlPort = 0 
)
bool OutgoingDataQueue::forgetDestination ( const InetMcastAddressia,
tpport_t  dataPort = DefaultRTPDataPort ,
tpport_t  controlPort = 0 
)
PayloadType RTPQueueBase::getCurrentPayloadType ( ) const
inlineinherited

Definition at line 201 of file queuebase.h.

uint32 RTPQueueBase::getCurrentRTPClockRate ( ) const
inlineinherited

Get the clock rate in RTP clock units (for instance, 8000 units per second for PCMU, or 90000 units per second for MP2T).

This value depends on what payload format has been selected using setPayloadFormat().

Returns
clock rate in RTP clock units.

Definition at line 198 of file queuebase.h.

uint32 OutgoingDataQueue::getCurrentSeqNum ( void  )
inlineprotected

Definition at line 525 of file oqueue.h.

microtimeout_t OutgoingDataQueue::getDefaultExpireTimeout ( ) const
inline

Definition at line 371 of file oqueue.h.

size_t OutgoingDataQueueBase::getDefaultMaxSendSegmentSize ( )
inlineinherited

Definition at line 262 of file queuebase.h.

microtimeout_t OutgoingDataQueue::getDefaultSchedulingTimeout ( ) const
inline

Definition at line 357 of file oqueue.h.

microtimeout_t OutgoingDataQueue::getExpireTimeout ( ) const
inline

Definition at line 385 of file oqueue.h.

TransportAddress* DestinationListHandler::getFirstDestination ( ) const
inlineinherited

Definition at line 85 of file oqueue.h.

timeval RTPQueueBase::getInitialTime ( ) const
inlineinherited

Definition at line 204 of file queuebase.h.

uint32 OutgoingDataQueue::getInitialTimestamp ( )
inlineprotected

Definition at line 537 of file oqueue.h.

uint32 RTPQueueBase::getLocalSSRC ( ) const
inlineinherited

Definition at line 187 of file queuebase.h.

uint32 RTPQueueBase::getLocalSSRCNetwork ( ) const
inlineprotectedinherited

Definition at line 217 of file queuebase.h.

bool OutgoingDataQueue::getMark ( ) const
inline

Get wheter the mark bit will be set in the next packet.

Definition at line 340 of file oqueue.h.

size_t OutgoingDataQueueBase::getMaxSendSegmentSize ( )
inlineinherited

Definition at line 276 of file queuebase.h.

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.

Definition at line 403 of file oqueue.h.

uint32 OutgoingDataQueue::getSendPacketCount ( ) const
inline

Get the total number of packets sent so far.

Returns
total number of packets sent

Definition at line 394 of file oqueue.h.

uint16 OutgoingDataQueue::getSequenceNumber ( ) const
inline

Get the sequence number of the next outgoing packet.

Returns
the 16 bit sequence number.

Definition at line 412 of file oqueue.h.

bool OutgoingDataQueue::isSending ( ) const

Determine if outgoing packets are waiting to send.

Returns
true if there are packets waiting to be send.
bool DestinationListHandler::isSingleDestination ( ) const
inlineinherited

Get whether there is only a destination in the list.

Definition at line 82 of file oqueue.h.

void DestinationListHandler::lockDestinationList ( ) const
inlineinherited

Definition at line 88 of file oqueue.h.

virtual void OutgoingDataQueue::onExpireSend ( OutgoingRTPPkt &  )
inlineprivatevirtual

A hook to filter packets being sent that have been expired.

Parameters
- expired packet from the send queue.

Definition at line 560 of file oqueue.h.

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 appearence that a next packet is waiting to be sent and to provide a valid timestamp for that packet.

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.
bool OutgoingDataQueue::removeContributor ( uint32  csrc )

Remove CSRC from the list of contributors.

bool DestinationListHandler::removeDestinationFromList ( const InetAddressia,
tpport_t  dataPort,
tpport_t  controlPort 
)
protectedinherited

Locks the object before modifying it.

void OutgoingDataQueue::removeOutQueueCryptoContext ( CryptoContextcc )

Remove output queue CryptoContext.

The endQueue method (provided by RTPQueue) also deletes all registered CryptoContexts.

Parameters
cc Pointer to initialized CryptoContext to remove.
virtual void RTPQueueBase::renewLocalSSRC ( )
inlineprotectedvirtualinherited

Reimplemented in IncomingDataQueue, and RTPDataQueue.

Definition at line 235 of file queuebase.h.

virtual size_t OutgoingDataQueue::sendData ( const unsigned char *const  buffer,
size_t  len 
)
inlineprivatevirtual

This function performs the physical I/O for writing a packet to the destination.

It is a virtual that is overriden in the derived class.

Parameters
buffer Pointer to data to write.
len Length of data to write.
Returns
number of bytes sent.

Reimplemented in RTPDuplex.

Definition at line 581 of file oqueue.h.

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 appearence 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 InetAddresshost,
tpport_t  port 
)
inlineprotectedvirtual

Reimplemented in RTPDuplex.

Definition at line 543 of file oqueue.h.

virtual void OutgoingDataQueue::setDataPeer ( const InetAddresshost,
tpport_t  port 
)
inlineprivatevirtual

Reimplemented in RTPDuplex.

Definition at line 564 of file oqueue.h.

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.

Definition at line 382 of file oqueue.h.

void OutgoingDataQueue::setInitialTimestamp ( uint32  ts )
inlineprotected

Definition at line 531 of file oqueue.h.

void RTPQueueBase::setLocalSSRC ( uint32  ssrc )
inlineprotectedinherited

Definition at line 214 of file queuebase.h.

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.

Parameters
mark Marker bit value for next packet.

Definition at line 334 of file oqueue.h.

void OutgoingDataQueueBase::setMaxSendSegmentSize ( size_t  size )
inlineinherited

Set maximum payload segment size before fragmenting sends.

Parameters
size Maximum payload size.
Returns
Whether segment size was successfully set.

Definition at line 272 of file queuebase.h.

void OutgoingDataQueue::setNextSeqNum ( uint32  seqNum )
inlineprotected

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

Parameters
seqNum next sequence number to be used for outgoing packets.

Definition at line 521 of file oqueue.h.

void OutgoingDataQueue::setOutQueueCryptoContext ( CryptoContextcc )

Set ouput 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.

Definition at line 323 of file oqueue.h.

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.
bool RTPQueueBase::setPayloadFormat ( const PayloadFormatpf )
inlineinherited

Set the payload format in use, for timing and payload type identification purposes.

Parameters
pf payload format to use from now on.
Returns
whether the payload format has been successfully set.

Definition at line 180 of file queuebase.h.

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.

Definition at line 367 of file oqueue.h.

void DestinationListHandler::unlockDestinationList ( ) const
inlineinherited

Definition at line 91 of file oqueue.h.

void DestinationListHandler::writeLockDestinationList ( ) const
inlineprotectedinherited

Definition at line 95 of file oqueue.h.

Field Documentation

bool OutgoingDataQueue::complete

Definition at line 618 of file oqueue.h.

std::list<CryptoContext *> OutgoingDataQueue::cryptoContexts
protected

Definition at line 552 of file oqueue.h.

Mutex OutgoingDataQueue::cryptoMutex
mutableprotected

Definition at line 551 of file oqueue.h.

const microtimeout_t OutgoingDataQueue::defaultExpireTimeout
staticprivate

Definition at line 589 of file oqueue.h.

const microtimeout_t OutgoingDataQueue::defaultSchedulingTimeout
staticprivate

Definition at line 588 of file oqueue.h.

std::list<TransportAddress*> DestinationListHandler::destList
protectedinherited

Definition at line 71 of file oqueue.h.

microtimeout_t OutgoingDataQueue::expireTimeout
private

Definition at line 597 of file oqueue.h.

uint32 OutgoingDataQueue::initialTimestamp
private

Definition at line 593 of file oqueue.h.

bool OutgoingDataQueue::marked

Definition at line 616 of file oqueue.h.

uint32 OutgoingDataQueue::octetCount

Definition at line 604 of file oqueue.h.

timeval OutgoingDataQueue::overflowTime

Definition at line 623 of file oqueue.h.

uint32 OutgoingDataQueue::packetCount

Definition at line 602 of file oqueue.h.

uint8 OutgoingDataQueue::paddinglen

Definition at line 612 of file oqueue.h.

microtimeout_t OutgoingDataQueue::schedulingTimeout
private

Definition at line 595 of file oqueue.h.

uint16 OutgoingDataQueue::sendCC

Definition at line 610 of file oqueue.h.

OutgoingRTPPktLink* OutgoingDataQueue::sendFirst
private

Definition at line 592 of file oqueue.h.

struct { ... } OutgoingDataQueue::sendInfo
OutgoingRTPPktLink * OutgoingDataQueue::sendLast
private

Definition at line 592 of file oqueue.h.

ThreadLock OutgoingDataQueue::sendLock
mutableprivate

Definition at line 590 of file oqueue.h.

uint16 OutgoingDataQueue::sendSeq

Definition at line 606 of file oqueue.h.

uint32 OutgoingDataQueue::sendSources[16]

Definition at line 608 of file oqueue.h.


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

Generated on Dec 21, 2017 for commoncpp2-1.8.1, ccrtp-1.7.2, libzrtpcpp-2.3.4, ccscript3-1.1.7, ccaudio2-1.0.0 and bayonne2-2.3.2 (after installation in /usr/local/) by   doxygen 1.8.6

AltStyle によって変換されたページ (->オリジナル) /