---
name: "RTPSessionPool"
section: "3"
platform: "linux"
package: "libccrtp-doc"
version: "2.0.9-4.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/RTPSessionPool"
---

# RTPSessionPool(3)

This class is a base class for classes that define a group of RTP sessions that will be served by one or more execution threads.

## NAME

RTPSessionPool - This class is a base class for classes that define a group of RTP sessions that will be served by one or more execution threads.

## SYNOPSIS

`#include <pool.h>`

Inherits **RTPSessionBaseHandler**.

Inherited by **SingleRTPSessionPool**.

### Public Member Functions

**RTPSessionPool** ()\
 virtual **~RTPSessionPool** ()\
 bool **addSession** (**RTPSessionBase** &session)\
 bool **removeSession** (**RTPSessionBase** &session)\
 size\_t **getPoolLength** () const\
 virtual void **startRunning** ()=0\
 bool **isActive** ()\

Public Member Functions inherited from **RTPSessionBaseHandler** **microtimeout\_t** **getSchedulingTimeout** (**RTPSessionBase** &s)\
 timeval **getRTCPCheckInterval** (**RTPSessionBase** &s)\
 size\_t **takeInDataPacket** (**RTPSessionBase** &s)\
 size\_t **dispatchDataPacket** (**RTPSessionBase** &s)\
 void **controlReceptionService** (**RTPSessionBase** &s)\
 void **controlTransmissionService** (**RTPSessionBase** &s)\
 SOCKET **getDataRecvSocket** (**RTPSessionBase** &s) const\
 SOCKET **getControlRecvSocket** (**RTPSessionBase** &s) const\

### Protected Types

typedef std::list\< **SessionListElement** \* \>::iterator **PoolIterator**\

### Protected Member Functions

void **setActive** ()\
 timeval **getPoolTimeout** ()\
 void **setPoolTimeout** (int sec, int usec)\
 void **setPoolTimeout** (struct timeval to)\

### Protected Attributes

std::list\< **SessionListElement** \* \> **sessionList**\
 ThreadLock **poolLock**\
 fd\_set **recvSocketSet**\
 SOCKET **highestSocket**\

## Detailed Description

This class is a base class for classes that define a group of RTP sessions that will be served by one or more execution threads.

Derived classes are responsible for serving each RTP session with a thread at least.

In order to use the RTP session 'pool' you just have to build **RTPSessionBase** objects for each RTP session (instead of RTPSession objects). Then, add the **RTPSessionBase** objects to an RTP session 'pool' and call **startRunning()** method of the session pool.

**Author**

Federico Montesino Pouzols fedemp@altern.org

## Member Typedef Documentation

### typedef std::list\<SessionListElement\*\>::iterator RTPSessionPool::PoolIterator` [protected]`

## Constructor & Destructor Documentation

### RTPSessionPool::RTPSessionPool ()

### virtual RTPSessionPool::~RTPSessionPool ()` [inline]`, ` [virtual]`

## Member Function Documentation

### bool RTPSessionPool::addSession (RTPSessionBase & session)

### size\_t RTPSessionPool::getPoolLength () const

### timeval RTPSessionPool::getPoolTimeout ()` [inline]`, ` [protected]`

### bool RTPSessionPool::isActive ()` [inline]`

### bool RTPSessionPool::removeSession (RTPSessionBase & session)

### void RTPSessionPool::setActive ()` [inline]`, ` [protected]`

### void RTPSessionPool::setPoolTimeout (int sec, int usec)` [inline]`, ` [protected]`

### void RTPSessionPool::setPoolTimeout (struct timeval to)` [inline]`, ` [protected]`

### virtual void RTPSessionPool::startRunning ()` [pure virtual]`

Implemented in **SingleRTPSessionPool**.

## Member Data Documentation

### SOCKET RTPSessionPool::highestSocket` [protected]`

### ThreadLock RTPSessionPool::poolLock` [mutable]`, ` [protected]`

### fd\_set RTPSessionPool::recvSocketSet` [protected]`

### std::list\<SessionListElement\*\> RTPSessionPool::sessionList` [protected]`

## Author

Generated automatically by Doxygen for ccRTP from the source code.
