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:
parser The SDP parser whose data this object will use
SDPSession ( SDPParser parser,
NamedList params 
)

Constructor

Parameters:
parser The SDP parser whose data this object will use
params SDP 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:
msg Destination list
natAddr Optional NAT address if detected
body Pointer to the body to extract raw SDP from
force True 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 String rawSdp 
)

Add raw SDP forwarding parameter if SDP forward is enabled

Parameters:
msg Destination list
rawSdp The raw sdp content
Returns:
True if the parameter was added
bool addSdpParams ( NamedList msg,
const MimeBody body 
)

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

Parameters:
msg Destination list
body Mime body to process
Returns:
True if the parameter was added
virtual Message* buildChanRtp ( RefObject context  )  [pure virtual]

Build a chan.rtp message without media information

Parameters:
context Pointer to reference counted user provided context
Returns:
The message with user data set but no media information
virtual Message* buildChanRtp ( SDPMedia media,
const char *  addr,
bool  start,
RefObject context 
) [virtual]

Build a chan.rtp message and populate with media information

Parameters:
media The media list
addr Remote RTP address
start True to request RTP start
context Pointer to reference counted user provided context
Returns:
The message with media information, NULL if media or addr are missing
MimeSdpBody* createPasstroughSDP ( NamedList msg,
bool  update = true 
)

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

Parameters:
msg The list of parameters
update True 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:
start True to create a started RTP
Returns:
MimeSdpBody pointer or 0
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:
addr Remote RTP address used when dispatching the chan.rtp message
start True 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:
addr Remote RTP address used when dispatching the chan.rtp message
msg List of parameters used to update data
Returns:
MimeSdpBody pointer or 0

References SDPSession::createRtpSDP().

Referenced by SDPSession::createRtpSDP().

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:
addr The address to set. Use own host if empty
mediaList Optional 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 ( 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:
addr Remote RTP address
start True to request RTP start
context Pointer to user provided context, optional
Returns:
True if the message was succesfully handled for at least one media
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:
media The media to use
addr Remote RTP address
start True to request RTP start
pick True to update local parameters (other then media) from returned message
context Pointer to user provided context, optional
Returns:
True if the message was succesfully handled
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:
media Old media that changed
void putMedia ( NamedList msg,
bool  putPort = true 
) [inline]

Put session media parameters into a list of parameters

Parameters:
msg Destination list
putPort True 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:
msg Destination list
media List of SDP media information
putPort True 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:
chg The new value for local RTP data changed flag of all media
bool setMedia ( ObjList media  ) 

Set a new media list

Parameters:
media New 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:
context Pointer 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:
msg Parameter list
changeMedia True to update media list if required
static ObjList* updateRtpSDP ( const NamedList params,
String rtpAddr,
ObjList oldList = 0 
) [static]

Update RTP/SDP data from parameters

Parameters:
params Parameter list
rtpAddr String to be filled with rtp address from the list
oldList Optional 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 updateRtpSDP ( const NamedList params  ) 

Update RTP/SDP data from parameters

Parameters:
params List of parameters to update from
Returns:
True if media or local address changed
bool updateSDP ( const NamedList params  ) 

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

Parameters:
params List of parameters to update from
Returns:
True if media changed

The documentation for this class was generated from the following file:
Generated on Thu Apr 8 18:22:39 2010 for Yate by  doxygen 1.6.3