# TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue > Class Template Reference
[RTP sessions.]

`#include <rtp.h>`

Inheritance diagram for TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >:

List of all members.

## Public Member Functions

| TRTPSessionBase (const InetHostAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app)
| Builds a session waiting for packets in a host address.
| TRTPSessionBase (uint32 ssrc, const InetHostAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app)
| Builds a session with the specified ssrc identifier for the local source.
| TRTPSessionBase (const InetMcastAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app, uint32 iface)
| Builds a session waiting for packets in a multicast address.
| TRTPSessionBase (uint32 ssrc, const InetMcastAddress &ia, tpport_t dataPort, tpport_t controlPort, uint32 membersSize, RTPApplication &app, uint32 iface)
| Builds a session waiting for packets in a multicast address, with the specified ssrc identifier for the local source.
virtual size_t | dispatchBYE (const std::string &str)
Socket::Error | setMcastTTL (uint8 ttl)
| Set the value of the TTL field in the sent packets.
virtual | ~TRTPSessionBase ()
RTPDataChannel * | getDSO (void)

## Protected Member Functions

bool | isPendingData (microtimeout_t timeout)
InetHostAddress | getDataSender (tpport_t *port=NULL) const
size_t | getNextDataPacketSize () const
size_t | recvData (unsigned char *buffer, size_t len, InetHostAddress &na, tpport_t &tp)
| Receive data from the data channel/socket.
void | setDataPeer (const InetAddress &host, tpport_t port)
size_t | sendData (const unsigned char *const buffer, size_t len)
SOCKET | getDataRecvSocket () const
bool | isPendingControl (microtimeout_t timeout)
InetHostAddress | getControlSender (tpport_t *port=NULL) const
size_t | recvControl (unsigned char *buffer, size_t len, InetHostAddress &na, tpport_t &tp)
| Receive data from the control channel/socket.
void | setControlPeer (const InetAddress &host, tpport_t port)
size_t | sendControl (const unsigned char *const buffer, size_t len)
SOCKET | getControlRecvSocket () const
Socket::Error | joinGroup (const InetMcastAddress &ia, uint32 iface)
| Join a multicast group.
Socket::Error | leaveGroup (const InetMcastAddress &ia)
| Leave a multicast group.
void | endSocket ()

## Protected Attributes

RTPDataChannel * | dso
RTCPChannel * | cso

## Friends

class | RTPSessionBaseHandler

### template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>
class TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >

## Constructor & Destructor Documentation

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | const InetHostAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app
| ) |  | `[inline]`

Builds a session waiting for packets in a host address.

Parameters:

  ia | Network address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | uint32 | ssrc,
|  | const InetHostAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app
| ) |  | `[inline]`

Builds a session with the specified ssrc identifier for the local source.

Parameters:

  ssrc | SSRC identifier for the local source.
  ia | Network address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | const InetMcastAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app,
|  | uint32 | iface
| ) |  | `[inline]`

Builds a session waiting for packets in a multicast address.

TODO: ssrc constructor for multicast!

Parameters:

  ia | Multicast address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.
  iface | Index (from 0 to n) of network interface to join to multicast group.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::TRTPSessionBase | ( | uint32 | ssrc,
|  | const InetMcastAddress & | ia,
|  | tpport_t | dataPort,
|  | tpport_t | controlPort,
|  | uint32 | membersSize,
|  | RTPApplication & | app,
|  | uint32 | iface
| ) |  | `[inline]`

Builds a session waiting for packets in a multicast address, with the specified ssrc identifier for the local source.

Parameters:

  ssrc | SSRC identifier for the local source.
  ia | Multicast address this socket is to be bound.
  dataPort | Transport port the data socket is to be bound.
  controlPort | Transport port the control socket is to be bound.
  membersSize | Initial size of the membership table.
  app | Application this session is associated to.
  iface | Index (from 0 to n) of network interface to join to multicast group.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

virtual TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::~TRTPSessionBase | ( | ) | `[inline, virtual]`

## Member Function Documentation

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

virtual size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::dispatchBYE | ( | const std::string & | str ) | `[inline, virtual]`

Reimplemented in SingleThreadRTPSession< RTPDataChannel, RTCPChannel, ServiceQueue >.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

void TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::endSocket | ( | ) | `[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

SOCKET TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getControlRecvSocket | ( | ) | const`[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

InetHostAddress TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getControlSender | ( | tpport_t * | port = `NULL` ) | const`[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

SOCKET TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getDataRecvSocket | ( | ) | const`[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

InetHostAddress TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getDataSender | ( | tpport_t * | port = `NULL` ) | const`[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

RTPDataChannel* TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getDSO | ( | void | ) | `[inline]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::getNextDataPacketSize | ( | ) | const`[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

bool TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::isPendingControl | ( | microtimeout_t | timeout ) | `[inline, protected]`

Parameters:

  timeout | maximum timeout to wait, in microseconds

Returns:
  whether there are packets waiting to be picked

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

bool TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::isPendingData | ( | microtimeout_t | timeout ) | `[inline, protected]`

Parameters:

  timeout | maximum timeout to wait, in microseconds

Reimplemented in SingleThreadRTPSession< RTPDataChannel, RTCPChannel, ServiceQueue >.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

Socket::Error TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::joinGroup | ( | const InetMcastAddress & | ia,
|  | uint32 | iface
| ) |  | `[inline, protected]`

Join a multicast group.

Parameters:

  ia | address of the multicast group

Returns:
  error code from the socket operation

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

Socket::Error TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::leaveGroup | ( | const InetMcastAddress & | ia ) | `[inline, protected]`

Leave a multicast group.

Parameters:

  ia | address of the multicast group

Returns:
  error code from the socket operation

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::recvControl | ( | unsigned char * | buffer,
|  | size_t | len,
|  | InetHostAddress & | na,
|  | tpport_t & | tp
| ) |  | `[inline, protected]`

Receive data from the control channel/socket.

Parameters:

  buffer | Buffer where to get data.
  len | Maximum number of octets to get.
  na | Source network address.
  tp | Source transport port.

Returns:
  Number of octets actually read.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::recvData | ( | unsigned char * | buffer,
|  | size_t | len,
|  | InetHostAddress & | na,
|  | tpport_t & | tp
| ) |  | `[inline, protected]`

Receive data from the data channel/socket.

Parameters:

  buffer | Memory region to read to.
  len | Maximum number of octets to get.
  na | Source network address.
  tp | Source transport port.

Returns:
  Number of octets actually read.

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::sendControl | ( | const unsigned char *const | buffer,
|  | size_t | len
| ) |  | `[inline, protected]`

Returns:
  number of octets actually written

Parameters:

  buffer |
  len |

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

size_t TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::sendData | ( | const unsigned char *const | buffer,
|  | size_t | len
| ) |  | `[inline, protected]`

Parameters:

  buffer | memory region to write from
  len | number of octets to write

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

void TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::setControlPeer | ( | const InetAddress & | host,
|  | tpport_t | port
| ) |  | `[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

void TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::setDataPeer | ( | const InetAddress & | host,
|  | tpport_t | port
| ) |  | `[inline, protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

Socket::Error TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::setMcastTTL | ( | uint8 | ttl ) | `[inline]`

Set the value of the TTL field in the sent packets.

Parameters:

  ttl | Time To Live

Returns:
  error code from the socket operation

## Friends And Related Function Documentation

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

friend class RTPSessionBaseHandler `[friend]`

## Member Data Documentation

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

RTCPChannel* TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::cso `[protected]`

template<class RTPDataChannel = DualRTPUDPIPv4Channel, class RTCPChannel = DualRTPUDPIPv4Channel, class ServiceQueue = AVPQueue>

RTPDataChannel* TRTPSessionBase< RTPDataChannel, RTCPChannel, ServiceQueue >::dso `[protected]`

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

- rtp.h