class SDPSession

A holder for a SDP session. More...

Contains pure virtuals
Full nameTelEngine::SDPSession
Definition#include <libs/ysdp/yatesdp.h>
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Types

Public Methods

Public Static Methods

Protected Methods

Protected Members


Detailed Description

This class holds RTP/SDP data for multiple media types NOTE: The SDPParser pointer held by this class is assumed to be non NULL

enum { MediaMissing, MediaStarted, MediaMuted }

RTP media status enumeration

 SDPSession (SDPParser* parser)

SDPSession

Constructor

Parameters:
parserThe SDP parser whose data this object will use

 SDPSession (SDPParser* parser, NamedList& params)

SDPSession

Constructor

Parameters:
parserThe SDP parser whose data this object will use
paramsSDP session parameters

 ~SDPSession ()

~SDPSession

[virtual]

Destructor. Reset the object

inline const String&  getHost ()

getHost

[const]

Get RTP local host

Returns: RTP local host

inline const String&  getRtpAddr ()

getRtpAddr

[const]

Get local RTP address

Returns: Local RTP address (external or local)

bool  setMedia (ObjList* media)

setMedia

Set a new media list

Parameters:
mediaNew media list

Returns: True if media changed

void  putMedia (NamedList& msg, ObjList* media, bool putPort = true)

putMedia

[static]

Put specified media parameters into a list of parameters

Parameters:
msgDestination list
mediaList of SDP media information
putPortTrue to add the media port

inline void  putMedia (NamedList& msg, bool putPort = true)

putMedia

Put session media parameters into a list of parameters

Parameters:
msgDestination list
putPortTrue to add the media port

SDPMedia*  getMedia (const String& name)

getMedia

[const]

Retrieve a single media description

Parameters:
nameName of the media to retrieve

Returns: Pointer to media descriptor, NULL if no such media set

void  setRfc2833 (const String& value)

setRfc2833

Update the RFC 2833 availability and payload

Parameters:
valueString to get payload or availability

inline void  setRfc2833 (const String* value)

setRfc2833

Update the RFC 2833 availability and payload

Parameters:
valuePointer to string to get payload or availability

bool  dispatchRtp (SDPMedia* media, const char* addr, bool start, bool pick, RefObject* context = 0)

dispatchRtp

Build and dispatch a chan.rtp message for a given media. Update media on success

Parameters:
mediaThe media to use
addrRemote RTP address
startTrue to request RTP start
pickTrue to update local parameters (other then media) from returned message
contextPointer to user provided context, optional

Returns: True if the message was succesfully handled

bool  dispatchRtp (const char* addr, bool start, RefObject* context = 0)

dispatchRtp

Calls dispatchRtp() for each media in the list Update it on success. Remove it on failure

Parameters:
addrRemote RTP address
startTrue to request RTP start
contextPointer to user provided context, optional

Returns: True if the message was succesfully handled for at least one media

bool  startRtp (RefObject* context = 0)

startRtp

Try to start RTP (calls dispatchRtp()) for each media in the list

Parameters:
contextPointer to user provided context, optional

Returns: True if at least one media was started

bool  updateSDP (const NamedList& params)

updateSDP

Update from parameters. Build a default SDP from parser formats if no media is found in params

Parameters:
paramsList of parameters to update from

Returns: True if media changed

bool  updateRtpSDP (const NamedList& params)

updateRtpSDP

Update RTP/SDP data from parameters

Parameters:
paramsList of parameters to update from

Returns: True if media or local address changed

MimeSdpBody*  createSDP (const char* addr, ObjList* mediaList = 0)

createSDP

Creates a SDP body from transport address and list of media descriptors

Parameters:
addrThe address to set. Use own host if empty
mediaListOptional media list. Use own list if the given one is 0

Returns: MimeSdpBody pointer or 0 if there is no media to set

MimeSdpBody*  createSDP ()

createSDP

Creates a SDP body for current media status

Returns: MimeSdpBody pointer or 0 if media is missing

MimeSdpBody*  createPasstroughSDP (NamedList& msg, bool update = true, bool allowEmptyAddr = false)

createPasstroughSDP

Creates a SDP from RTP address data present in message. Use the raw SDP if present.

Parameters:
msgThe list of parameters
updateTrue to update RTP/SDP data if raw SDP is not found in the list
allowEmptyAddrAllow empty address in parameters (default: false)

Returns: MimeSdpBody pointer or 0

inline MimeSdpBody*  createRtpSDP (const char* addr, const NamedList& msg)

createRtpSDP

Creates a set of unstarted external RTP channels from remote addr and builds SDP from them

Parameters:
addrRemote RTP address used when dispatching the chan.rtp message
msgList of parameters used to update data

Returns: MimeSdpBody pointer or 0

inline MimeSdpBody*  createRtpSDP (const char* addr, bool start)

createRtpSDP

Creates a set of RTP channels from address and media info and builds SDP from them

Parameters:
addrRemote RTP address used when dispatching the chan.rtp message
startTrue to create a started RTP

Returns: MimeSdpBody pointer or 0

inline MimeSdpBody*  createRtpSDP (bool start)

createRtpSDP

Creates a set of started external RTP channels from remote addr and builds SDP from them

Parameters:
startTrue to create a started RTP

Returns: MimeSdpBody pointer or 0

void  updateFormats (const NamedList& msg, bool changeMedia = false)

updateFormats

Update media format lists from parameters

Parameters:
msgParameter list
changeMediaTrue to update media list if required

bool  addSdpParams (NamedList& msg, const MimeBody* body)

addSdpParams

Add raw SDP forwarding parameter from body if SDP forward is enabled

Parameters:
msgDestination list
bodyMime body to process

Returns: True if the parameter was added

bool  addSdpParams (NamedList& msg, const String& rawSdp)

addSdpParams

Add raw SDP forwarding parameter if SDP forward is enabled

Parameters:
msgDestination list
rawSdpThe raw sdp content

Returns: True if the parameter was added

bool  addRtpParams (NamedList& msg, const String& natAddr = String::empty(), const MimeBody* body = 0, bool force = false, bool allowEmptyAddr = false)

addRtpParams

Add RTP forwarding parameters to a message (media and address)

Parameters:
msgDestination list
natAddrOptional NAT address if detected
bodyPointer to the body to extract raw SDP from
forceTrue to override RTP forward flag
allowEmptyAddrAllow empty address in parameters (default: false)

Returns: True if RTP data was added. Media is always added if present and remote address is not empty

void  resetSdp (bool all = true)

resetSdp

[virtual]

Reset this object to default values

Parameters:
allTrue to reset all parameters including configuration

Message*  buildChanRtp (SDPMedia* media, const char* addr, bool start, RefObject* context)

buildChanRtp

[virtual]

Build a chan.rtp message and populate with media information

Parameters:
mediaThe media list
addrRemote RTP address
startTrue to request RTP start
contextPointer to reference counted user provided context

Returns: The message with media information, NULL if media or addr are missing

Message*  buildChanRtp (RefObject* context)

buildChanRtp

[pure virtual]

Build a chan.rtp message without media information

Parameters:
contextPointer to reference counted user provided context

Returns: The message with user data set but no media information

bool  localRtpChanged ()

localRtpChanged

[const]

Check if local RTP data changed for at least one media

Returns: True if local RTP data changed for at least one media

void  setLocalRtpChanged (bool chg = false)

setLocalRtpChanged

Set or reset the local RTP data changed flag for all media

Parameters:
chgThe new value for local RTP data changed flag of all media

ObjList*  updateRtpSDP (const NamedList& params, String& rtpAddr, ObjList* oldList = 0, bool allowEmptyAddr = false)

updateRtpSDP

[static]

Update RTP/SDP data from parameters

Parameters:
paramsParameter list
rtpAddrString to be filled with rtp address from the list
oldListOptional existing media list (found media will be removed from it and added to the returned list
allowEmptyAddrAllow empty address in parameters (default: false)

Returns: List of media or 0 if not found or rtpAddr is empty

void  mediaChanged (const SDPMedia& media)

mediaChanged

[protected virtual]

Media changed notification. This method is called when setting new media and an old one changed

Parameters:
mediaOld media that changed

void  dispatchingRtp (Message*& msg, SDPMedia* media)

dispatchingRtp

[protected virtual]

Dispatch rtp notification. This method is called before dispatching the message. Clear the message to stop dispatch

Parameters:
msgMessage to dispatch
mediaMedia for which the message is going to be dispatched

void  setSdpDebug (DebugEnabler* enabler = 0, void* ptr = 0)

setSdpDebug

[protected]

Set data used in debug

Parameters:
enablerThe DebugEnabler to use (0 to to use the parser)
ptrPointer to print, 0 to use the session pointer

void  printRtpMedia (const char* reason)

printRtpMedia

[protected]

Print current media to output

Parameters:
reasonReason to print

SDPParser* m_parser

m_parser

[protected]

int m_mediaStatus

m_mediaStatus

[protected]

bool m_rtpForward

m_rtpForward

[protected]

bool m_sdpForward

m_sdpForward

[protected]

String m_originAddr

m_originAddr

[protected]

String m_externalAddr

m_externalAddr

[protected]

String m_rtpAddr

m_rtpAddr

[protected]

String m_rtpLocalAddr

m_rtpLocalAddr

[protected]

String m_rtpNatAddr

m_rtpNatAddr

[protected]

ObjList* m_rtpMedia

m_rtpMedia

[protected]

int m_sdpSession

m_sdpSession

[protected]

int m_sdpVersion

m_sdpVersion

[protected]

String m_host

m_host

[protected]

bool m_secure

m_secure

[protected]

int m_rfc2833

m_rfc2833

[protected]

bool m_ipv6

m_ipv6

[protected]


Generated by: paulc on bussard on Mon Feb 10 13:15:47 2014, using kdoc 2.0a54.