SIPURL Class Reference

#include <sippdu.h>

List of all members.

Public Types

enum  UsageContext {
  ExternalURI, RequestURI, ToURI, FromURI,
  ContactURI, RouteURI
}

Public Member Functions

 SIPURL ()
 SIPURL (const char *cstr, const char *defaultScheme=NULL)
 SIPURL (const PString &str, const char *defaultScheme=NULL)
 SIPURL (const PString &name, const OpalTransportAddress &address, WORD listenerPort=0)
virtual Comparison Compare (const PObject &obj) const
PString AsQuotedString () const
PString GetDisplayName (PBoolean useDefault=PTrue) const
void SetDisplayName (const PString &str)
PString GetFieldParameters () const
OpalTransportAddress GetHostAddress () const
void Sanitise (UsageContext context)
PBoolean AdjustToDNS (PINDEX entry=0)

Protected Member Functions

virtual PBoolean InternalParse (const char *cstr, const char *defaultScheme)

Protected Attributes

PString displayName
PString fieldParameters


Detailed Description

This class extends PURL to include displayname, optional "<>" delimiters and extended parameters - like tag. It may be used for From:, To: and Contact: lines.


Member Enumeration Documentation

enum SIPURL::UsageContext

Enumerator:
ExternalURI  URI used anywhere outside of protocol.
RequestURI  Request-URI (after the INVITE).
ToURI  To header field.
FromURI  From header field.
ContactURI  Registration or Redirection Contact header field.
RouteURI  Dialog Contact header field, or Record-Route header field.


Constructor & Destructor Documentation

SIPURL::SIPURL (  ) 

SIPURL::SIPURL ( const char *  cstr,
const char *  defaultScheme = NULL 
)

str goes straight to Parse()

Parameters:
cstr  C string representation of the URL.
defaultScheme  Default scheme for URL

SIPURL::SIPURL ( const PString &  str,
const char *  defaultScheme = NULL 
)

str goes straight to Parse()

Parameters:
str  String representation of the URL.
defaultScheme  Default scheme for URL

SIPURL::SIPURL ( const PString &  name,
const OpalTransportAddress address,
WORD  listenerPort = 0 
)

If name does not start with 'sip' then construct URI in the form sip:name:port;transport=transport where host comes from address, port is listenerPort or port from address if that was 0 transport is udp unless address specified tcp Send name starting with 'sip' or constructed URI to Parse()


Member Function Documentation

virtual Comparison SIPURL::Compare ( const PObject &  obj  )  const [virtual]

Compare the two SIPURLs and return their relative rank. Note that does an intelligent comparison according to the rules in RFC3261 Section 19.1.4.

Returns:
LessThan#, EqualTo# or GreaterThan# according to the relative rank of the objects.
Parameters:
obj  Object to compare against.

PString SIPURL::AsQuotedString (  )  const

Returns complete SIPURL as one string, including displayname (in quotes) and address in angle brackets.

PString SIPURL::GetDisplayName ( PBoolean  useDefault = PTrue  )  const

Returns display name only

void SIPURL::SetDisplayName ( const PString &  str  )  [inline]

PString SIPURL::GetFieldParameters (  )  const [inline]

Returns the field parameter (outside of <>)

OpalTransportAddress SIPURL::GetHostAddress (  )  const

Get the host and port as a transpoprt address.

void SIPURL::Sanitise ( UsageContext  context  ) 

Removes tag parm & query vars and recalculates urlString (scheme, user, password, host, port & URI parms (like transport)) which are not allowed in the context specified, e.g. Request-URI etc According to RFC3261, 19.1.1 Table 1

Parameters:
context  Context for URI

PBoolean SIPURL::AdjustToDNS ( PINDEX  entry = 0  ) 

This will adjust the current URL according to RFC3263, using DNS SRV records.

Returns:
FALSE if DNS is available but entry is larger than last SRV record entry, TRUE if DNS lookup fails or no DNS is available
Parameters:
entry  Entry in the SRV record to adjust to

virtual PBoolean SIPURL::InternalParse ( const char *  cstr,
const char *  defaultScheme 
) [protected, virtual]

Parses name-addr, like: "displayname"<scheme:user:password:port;transport=type>;tag=value into: displayname (quotes around name are optional, all before '<' is used) scheme username password hostname port pathStr path paramVars queryVars fragment

Note that tag parameter outside of <> will be lost, but tag in URL without <> will be kept until Sanitise()


Member Data Documentation

PString SIPURL::displayName [protected]

PString SIPURL::fieldParameters [protected]


The documentation for this class was generated from the following file:
Generated on Mon Sep 15 11:49:43 2008 for OPAL by  doxygen 1.5.1