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

Public Members

Protected Methods


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

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)

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

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)

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

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

void  resetSdp ()

resetSdp

[virtual]

Reset this object to default values

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)

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

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

SDPParser* m_parser

m_parser

int m_mediaStatus

m_mediaStatus

bool m_rtpForward

m_rtpForward

bool m_sdpForward

m_sdpForward

String m_externalAddr

m_externalAddr

String m_rtpAddr

m_rtpAddr

String m_rtpLocalAddr

m_rtpLocalAddr

ObjList* m_rtpMedia

m_rtpMedia

int m_sdpSession

m_sdpSession

int m_sdpVersion

m_sdpVersion

String m_host

m_host

bool m_secure

m_secure

bool m_rfc2833

m_rfc2833

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


Generated by: paulc on bussard on Tue Mar 8 18:42:27 2011, using kdoc 2.0a54.