Yate
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions

SDPSession Class Reference

A holder for a SDP session. More...

#include <yatesdp.h>

List of all members.

Public Types

enum  { MediaMissing, MediaStarted, MediaMuted }

Public Member Functions

 SDPSession (SDPParser *parser)
 SDPSession (SDPParser *parser, NamedList &params)
virtual ~SDPSession ()
const StringgetHost () const
const StringgetRtpAddr () const
bool setMedia (ObjList *media)
void putMedia (NamedList &msg, bool putPort=true)
bool dispatchRtp (SDPMedia *media, const char *addr, bool start, bool pick, RefObject *context=0)
bool dispatchRtp (const char *addr, bool start, RefObject *context=0)
bool startRtp (RefObject *context=0)
bool updateSDP (const NamedList &params)
bool updateRtpSDP (const NamedList &params)
MimeSdpBodycreateSDP (const char *addr, ObjList *mediaList=0)
MimeSdpBodycreateSDP ()
MimeSdpBodycreatePasstroughSDP (NamedList &msg, bool update=true)
MimeSdpBodycreateRtpSDP (const char *addr, const NamedList &msg)
MimeSdpBodycreateRtpSDP (const char *addr, bool start)
MimeSdpBodycreateRtpSDP (bool start)
void updateFormats (const NamedList &msg, bool changeMedia=false)
bool addSdpParams (NamedList &msg, const MimeBody *body)
bool addSdpParams (NamedList &msg, const String &rawSdp)
bool addRtpParams (NamedList &msg, const String &natAddr=String::empty(), const MimeBody *body=0, bool force=false)
virtual void resetSdp ()
virtual MessagebuildChanRtp (SDPMedia *media, const char *addr, bool start, RefObject *context)
virtual MessagebuildChanRtp (RefObject *context)=0
bool localRtpChanged () const
void setLocalRtpChanged (bool chg=false)

Static Public Member Functions

static void putMedia (NamedList &msg, ObjList *media, bool putPort=true)
static ObjListupdateRtpSDP (const NamedList &params, String &rtpAddr, ObjList *oldList=0)

Public Attributes

SDPParserm_parser
int m_mediaStatus
bool m_rtpForward
bool m_sdpForward
String m_externalAddr
String m_rtpAddr
String m_rtpLocalAddr
ObjListm_rtpMedia
int m_sdpSession
int m_sdpVersion
String m_host
bool m_secure
bool m_rfc2833

Protected Member Functions

virtual void mediaChanged (const SDPMedia &media)

Detailed Description

A holder for a SDP session.

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


Member Enumeration Documentation

anonymous enum

RTP media status enumeration


Constructor & Destructor Documentation

SDPSession ( SDPParser parser)

Constructor

Parameters:
parserThe SDP parser whose data this object will use
SDPSession ( SDPParser parser,
NamedList params 
)

Constructor

Parameters:
parserThe SDP parser whose data this object will use
paramsSDP session parameters
virtual ~SDPSession ( ) [virtual]

Destructor. Reset the object


Member Function Documentation

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

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
bool addSdpParams ( NamedList msg,
const MimeBody body 
)

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 
)

Add raw SDP forwarding parameter if SDP forward is enabled

Parameters:
msgDestination list
rawSdpThe raw sdp content
Returns:
True if the parameter was added
virtual Message* buildChanRtp ( SDPMedia media,
const char *  addr,
bool  start,
RefObject context 
) [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
virtual Message* buildChanRtp ( RefObject context) [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
MimeSdpBody* createPasstroughSDP ( NamedList msg,
bool  update = true 
)

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
MimeSdpBody* createRtpSDP ( bool  start) [inline]

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
MimeSdpBody* createRtpSDP ( const char *  addr,
const NamedList msg 
) [inline]

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

References SDPSession::createRtpSDP().

Referenced by SDPSession::createRtpSDP().

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

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
MimeSdpBody* createSDP ( )

Creates a SDP body for current media status

Returns:
MimeSdpBody pointer or 0 if media is missing
MimeSdpBody* createSDP ( const char *  addr,
ObjList mediaList = 0 
)

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
bool dispatchRtp ( SDPMedia media,
const char *  addr,
bool  start,
bool  pick,
RefObject context = 0 
)

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 
)

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
const String& getHost ( ) const [inline]

Get RTP local host

Returns:
RTP local host
const String& getRtpAddr ( ) const [inline]

Get local RTP address

Returns:
Local RTP address (external or local)
bool 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
virtual void mediaChanged ( const SDPMedia media) [protected, virtual]

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

Parameters:
mediaOld media that changed
void putMedia ( NamedList msg,
bool  putPort = true 
) [inline]

Put session media parameters into a list of parameters

Parameters:
msgDestination list
putPortTrue to add the media port

References SDPSession::putMedia().

Referenced by SDPSession::putMedia().

static void putMedia ( NamedList msg,
ObjList media,
bool  putPort = true 
) [static]

Put specified media parameters into a list of parameters

Parameters:
msgDestination list
mediaList of SDP media information
putPortTrue to add the media port
virtual void resetSdp ( ) [virtual]

Reset this object to default values

void setLocalRtpChanged ( bool  chg = false)

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
bool setMedia ( ObjList media)

Set a new media list

Parameters:
mediaNew media list
Returns:
True if media changed
bool startRtp ( RefObject context = 0)

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
void updateFormats ( const NamedList msg,
bool  changeMedia = false 
)

Update media format lists from parameters

Parameters:
msgParameter list
changeMediaTrue to update media list if required
bool updateRtpSDP ( const NamedList params)

Update RTP/SDP data from parameters

Parameters:
paramsList of parameters to update from
Returns:
True if media or local address changed
static ObjList* updateRtpSDP ( const NamedList params,
String rtpAddr,
ObjList oldList = 0 
) [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
bool updateSDP ( const NamedList params)

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

The documentation for this class was generated from the following file: