RTP_SessionManager Class Reference

#include <rtp.h>

List of all members.

Public Member Functions

Construction
 RTP_SessionManager ()
 RTP_SessionManager (const RTP_SessionManager &sm)
RTP_SessionManageroperator= (const RTP_SessionManager &sm)
Operations
RTP_SessionUseSession (unsigned sessionID)
void AddSession (RTP_Session *session)
void ReleaseSession (unsigned sessionID)
RTP_SessionGetSession (unsigned sessionID) const
RTP_SessionFirst ()
RTP_SessionNext ()
void Exit ()

Protected Member Functions

 PDICTIONARY (SessionDict, POrdinalKey, RTP_Session)

Protected Attributes

SessionDict sessions
PMutex mutex
PINDEX enumerationIndex


Detailed Description

This class is for encpsulating the IETF Real Time Protocol interface.


Constructor & Destructor Documentation

RTP_SessionManager::RTP_SessionManager (  ) 

Construct new session manager database.

RTP_SessionManager::RTP_SessionManager ( const RTP_SessionManager sm  ) 


Member Function Documentation

void RTP_SessionManager::AddSession ( RTP_Session session  ) 

Add an RTP session for the specified ID.

This function MUST be called only after the UseSession() function has returned NULL. The mutex flag is left locked in that case. This function expects the mutex to be locked and unlocks it automatically.

Parameters:
session  Session to add.

void RTP_SessionManager::Exit (  ) 

Exit the enumeration of RTP sessions. If the enumeration is desired to be exited before Next() returns NULL this this must be called to unlock the session database.

Note that you should NOT call Exit() if Next() HAS returned NULL, or race conditions can result.

RTP_Session* RTP_SessionManager::First (  ) 

Begin an enumeration of the RTP sessions. This function acquires the mutex for the sessions database and returns the first element in it.

eg: RTP_Session * session; for (session = rtpSessions.First(); session != NULL; session = rtpSessions.Next()) { if (session->Something()) { rtpSessions.Exit(); break; } }

Note that the Exit() function must be called if the enumeration is stopped prior to Next() returning NULL.

RTP_Session* RTP_SessionManager::GetSession ( unsigned  sessionID  )  const

Get a session for the specified ID. Unlike UseSession, this does not increment the usage count on the session so may be used to just gain a pointer to an RTP session.

Parameters:
sessionID  Session ID to get.

RTP_Session* RTP_SessionManager::Next (  ) 

Get the next session in the enumeration. The session database remains locked until this function returns NULL.

Note that the Exit() function must be called if the enumeration is stopped prior to Next() returning NULL.

RTP_SessionManager& RTP_SessionManager::operator= ( const RTP_SessionManager sm  ) 

RTP_SessionManager::PDICTIONARY ( SessionDict  ,
POrdinalKey  ,
RTP_Session   
) [protected]

void RTP_SessionManager::ReleaseSession ( unsigned  sessionID  ) 

Release the session. If the session ID is not being used any more any clients via the UseSession() function, then the session is deleted.

Parameters:
sessionID  Session ID to release.

RTP_Session* RTP_SessionManager::UseSession ( unsigned  sessionID  ) 

Use an RTP session for the specified ID.

If this function returns a non-null value, then the ReleaseSession() function MUST be called or the session is never deleted for the lifetime of the session manager.

If there is no session of the specified ID, then you MUST call the AddSession() function with a new RTP_Session. The mutex flag is left locked in this case. The AddSession() expects the mutex to be locked and unlocks it automatically.

Parameters:
sessionID  Session ID to use.


Member Data Documentation

PINDEX RTP_SessionManager::enumerationIndex [protected]

PMutex RTP_SessionManager::mutex [protected]

SessionDict RTP_SessionManager::sessions [protected]


The documentation for this class was generated from the following file:
Generated on Mon Sep 25 16:21:54 2006 for OPAL by  doxygen 1.4.7