#include <rtp.h>
Public Member Functions | |
Construction | |
| RTP_SessionManager () | |
| RTP_SessionManager (const RTP_SessionManager &sm) | |
| RTP_SessionManager & | operator= (const RTP_SessionManager &sm) |
Operations | |
| RTP_Session * | UseSession (unsigned sessionID) |
| void | AddSession (RTP_Session *session) |
| void | ReleaseSession (unsigned sessionID) |
| RTP_Session * | GetSession (unsigned sessionID) const |
| RTP_Session * | First () |
| RTP_Session * | Next () |
| void | Exit () |
Protected Attributes | |
| SessionDict | sessions |
| PMutex | mutex |
| PINDEX | enumerationIndex |
Definition at line 967 of file rtp.h.
| RTP_SessionManager::RTP_SessionManager | ( | ) |
Construct new session manager database.
Definition at line 1462 of file rtp.cxx.
References enumerationIndex.
| 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.
| sessionID | Session ID to use. |
Definition at line 1484 of file rtp.cxx.
References RTP_Session::IncrementReference(), mutex, and sessions.
Referenced by H323Connection::UseSession().
| 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.
| session | Session to add. |
Definition at line 1500 of file rtp.cxx.
References RTP_Session::GetSessionID(), mutex, and sessions.
Referenced by H323Connection::UseSession().
| 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.
| sessionID | Session ID to release. |
Definition at line 1512 of file rtp.cxx.
References mutex, and sessions.
Referenced by H323Connection::ReleaseSession().
| 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.
| sessionID | Session ID to get. |
Definition at line 1530 of file rtp.cxx.
References mutex, and sessions.
Referenced by H323Connection::GetSession(), and H323Connection::GetSessionCallbacks().
| 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.
Definition at line 1541 of file rtp.cxx.
References enumerationIndex, mutex, and Next().
| 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.
Definition at line 1550 of file rtp.cxx.
References enumerationIndex, Exit(), and sessions.
Referenced by First().
| 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.
Definition at line 1560 of file rtp.cxx.
References enumerationIndex, and mutex.
Referenced by Next().
1.5.2