SIP_PDU Class Reference

#include <sippdu.h>

Inheritance diagram for SIP_PDU:

SIPAck SIPTransaction SIPInvite SIPMessage SIPNotify SIPOptions SIPPing SIPPublish SIPRefer SIPReferNotify SIPRegister SIPSubscribe

Public Types

 Method_INVITE
 Method_ACK
 Method_OPTIONS
 Method_BYE
 Method_CANCEL
 Method_REGISTER
 Method_SUBSCRIBE
 Method_NOTIFY
 Method_REFER
 Method_MESSAGE
 Method_INFO
 Method_PING
 Method_PUBLISH
 NumMethods
 IllegalStatusCode
 Local_TransportError
 Local_BadTransportAddress
 Local_Timeout
 Information_Trying = 100
 Information_Ringing = 180
 Information_CallForwarded = 181
 Information_Queued = 182
 Information_Session_Progress = 183
 Successful_OK = 200
 Successful_Accepted = 202
 Redirection_MultipleChoices = 300
 Redirection_MovedPermanently = 301
 Redirection_MovedTemporarily = 302
 Redirection_UseProxy = 305
 Redirection_AlternativeService = 380
 Failure_BadRequest = 400
 Failure_UnAuthorised = 401
 Failure_PaymentRequired = 402
 Failure_Forbidden = 403
 Failure_NotFound = 404
 Failure_MethodNotAllowed = 405
 Failure_NotAcceptable = 406
 Failure_ProxyAuthenticationRequired = 407
 Failure_RequestTimeout = 408
 Failure_Conflict = 409
 Failure_Gone = 410
 Failure_LengthRequired = 411
 Failure_RequestEntityTooLarge = 413
 Failure_RequestURITooLong = 414
 Failure_UnsupportedMediaType = 415
 Failure_UnsupportedURIScheme = 416
 Failure_BadExtension = 420
 Failure_ExtensionRequired = 421
 Failure_IntervalTooBrief = 423
 Failure_TemporarilyUnavailable = 480
 Failure_TransactionDoesNotExist = 481
 Failure_LoopDetected = 482
 Failure_TooManyHops = 483
 Failure_AddressIncomplete = 484
 Failure_Ambiguous = 485
 Failure_BusyHere = 486
 Failure_RequestTerminated = 487
 Failure_NotAcceptableHere = 488
 Failure_BadEvent = 489
 Failure_RequestPending = 491
 Failure_Undecipherable = 493
 Failure_InternalServerError = 500
 Failure_NotImplemented = 501
 Failure_BadGateway = 502
 Failure_ServiceUnavailable = 503
 Failure_ServerTimeout = 504
 Failure_SIPVersionNotSupported = 505
 Failure_MessageTooLarge = 513
 GlobalFailure_BusyEverywhere = 600
 GlobalFailure_Decline = 603
 GlobalFailure_DoesNotExistAnywhere = 604
 GlobalFailure_NotAcceptable = 606
 MaxStatusCode = 699
 MaxSize = 65535
enum  Methods {
  Method_INVITE, Method_ACK, Method_OPTIONS, Method_BYE,
  Method_CANCEL, Method_REGISTER, Method_SUBSCRIBE, Method_NOTIFY,
  Method_REFER, Method_MESSAGE, Method_INFO, Method_PING,
  Method_PUBLISH, NumMethods
}
enum  StatusCodes {
  IllegalStatusCode, Local_TransportError, Local_BadTransportAddress, Local_Timeout,
  Information_Trying = 100, Information_Ringing = 180, Information_CallForwarded = 181, Information_Queued = 182,
  Information_Session_Progress = 183, Successful_OK = 200, Successful_Accepted = 202, Redirection_MultipleChoices = 300,
  Redirection_MovedPermanently = 301, Redirection_MovedTemporarily = 302, Redirection_UseProxy = 305, Redirection_AlternativeService = 380,
  Failure_BadRequest = 400, Failure_UnAuthorised = 401, Failure_PaymentRequired = 402, Failure_Forbidden = 403,
  Failure_NotFound = 404, Failure_MethodNotAllowed = 405, Failure_NotAcceptable = 406, Failure_ProxyAuthenticationRequired = 407,
  Failure_RequestTimeout = 408, Failure_Conflict = 409, Failure_Gone = 410, Failure_LengthRequired = 411,
  Failure_RequestEntityTooLarge = 413, Failure_RequestURITooLong = 414, Failure_UnsupportedMediaType = 415, Failure_UnsupportedURIScheme = 416,
  Failure_BadExtension = 420, Failure_ExtensionRequired = 421, Failure_IntervalTooBrief = 423, Failure_TemporarilyUnavailable = 480,
  Failure_TransactionDoesNotExist = 481, Failure_LoopDetected = 482, Failure_TooManyHops = 483, Failure_AddressIncomplete = 484,
  Failure_Ambiguous = 485, Failure_BusyHere = 486, Failure_RequestTerminated = 487, Failure_NotAcceptableHere = 488,
  Failure_BadEvent = 489, Failure_RequestPending = 491, Failure_Undecipherable = 493, Failure_InternalServerError = 500,
  Failure_NotImplemented = 501, Failure_BadGateway = 502, Failure_ServiceUnavailable = 503, Failure_ServerTimeout = 504,
  Failure_SIPVersionNotSupported = 505, Failure_MessageTooLarge = 513, GlobalFailure_BusyEverywhere = 600, GlobalFailure_Decline = 603,
  GlobalFailure_DoesNotExistAnywhere = 604, GlobalFailure_NotAcceptable = 606, MaxStatusCode = 699
}
enum  { MaxSize = 65535 }

Public Member Functions

 SIP_PDU (Methods method=SIP_PDU::NumMethods)
 SIP_PDU (const SIP_PDU &request, StatusCodes code, const char *contact=NULL, const char *extra=NULL, const SDPSessionDescription *sdp=NULL)
 SIP_PDU (const SIP_PDU &)
SIP_PDUoperator= (const SIP_PDU &)
 ~SIP_PDU ()
void PrintOn (ostream &strm) const
void InitialiseHeaders (const SIPURL &dest, const SIPURL &to, const SIPURL &from, const PString &callID, unsigned cseq, const PString &via)
void InitialiseHeaders (SIPDialogContext &dialog, const PString &via=PString::Empty())
void InitialiseHeaders (SIPConnection &connection, const OpalTransport &transport)
bool SetRoute (const PStringList &routeSet)
bool SetRoute (const SIPURL &proxy)
void SetAllow (unsigned bitmask)
void AdjustVia (OpalTransport &transport)
PString CreateVia (SIPEndPoint &endpoint, const OpalTransport &transport, SIPConnection *connection=NULL)
PBoolean Read (OpalTransport &transport)
PBoolean Write (OpalTransport &transport, const OpalTransportAddress &remoteAddress=OpalTransportAddress(), const PString &localInterface=PString::Empty())
bool SendResponse (OpalTransport &transport, StatusCodes code, SIPEndPoint *endpoint=NULL, const char *contact=NULL, const char *extra=NULL)
bool SendResponse (OpalTransport &transport, SIP_PDU &response, SIPEndPoint *endpoint=NULL)
PString Build ()
PString GetTransactionID () const
Methods GetMethod () const
StatusCodes GetStatusCode () const
void SetStatusCode (StatusCodes c)
const SIPURLGetURI () const
unsigned GetVersionMajor () const
unsigned GetVersionMinor () const
const PString & GetEntityBody () const
void SetEntityBody (const PString &body)
const PString & GetInfo () const
void SetInfo (const PString &info)
const SIPMIMEInfoGetMIME () const
SIPMIMEInfoGetMIME ()
void SetURI (const SIPURL &newuri)
SDPSessionDescriptionGetSDP ()
void SetSDP (SDPSessionDescription *sdp)

Static Public Member Functions

static const char * GetStatusCodeDescription (int code)

Protected Attributes

Methods m_method
StatusCodes m_statusCode
SIPURL m_uri
unsigned m_versionMajor
unsigned m_versionMinor
PString m_info
SIPMIMEInfo m_mime
PString m_entityBody
SDPSessionDescriptionm_SDP
PString m_transactionID
bool m_usePeerTransportAddress

Friends

ostream & operator<< (ostream &strm, StatusCodes status)

Detailed Description

Session Initiation Protocol message. Each message contains a header, MIME lines and possibly SDP. Class provides methods for reading from and writing to transport.


Member Enumeration Documentation

anonymous enum

Enumerator:
MaxSize 

enum SIP_PDU::Methods

Enumerator:
Method_INVITE 
Method_ACK 
Method_OPTIONS 
Method_BYE 
Method_CANCEL 
Method_REGISTER 
Method_SUBSCRIBE 
Method_NOTIFY 
Method_REFER 
Method_MESSAGE 
Method_INFO 
Method_PING 
Method_PUBLISH 
NumMethods 

enum SIP_PDU::StatusCodes

Enumerator:
IllegalStatusCode 
Local_TransportError 
Local_BadTransportAddress 
Local_Timeout 
Information_Trying 
Information_Ringing 
Information_CallForwarded 
Information_Queued 
Information_Session_Progress 
Successful_OK 
Successful_Accepted 
Redirection_MultipleChoices 
Redirection_MovedPermanently 
Redirection_MovedTemporarily 
Redirection_UseProxy 
Redirection_AlternativeService 
Failure_BadRequest 
Failure_UnAuthorised 
Failure_PaymentRequired 
Failure_Forbidden 
Failure_NotFound 
Failure_MethodNotAllowed 
Failure_NotAcceptable 
Failure_ProxyAuthenticationRequired 
Failure_RequestTimeout 
Failure_Conflict 
Failure_Gone 
Failure_LengthRequired 
Failure_RequestEntityTooLarge 
Failure_RequestURITooLong 
Failure_UnsupportedMediaType 
Failure_UnsupportedURIScheme 
Failure_BadExtension 
Failure_ExtensionRequired 
Failure_IntervalTooBrief 
Failure_TemporarilyUnavailable 
Failure_TransactionDoesNotExist 
Failure_LoopDetected 
Failure_TooManyHops 
Failure_AddressIncomplete 
Failure_Ambiguous 
Failure_BusyHere 
Failure_RequestTerminated 
Failure_NotAcceptableHere 
Failure_BadEvent 
Failure_RequestPending 
Failure_Undecipherable 
Failure_InternalServerError 
Failure_NotImplemented 
Failure_BadGateway 
Failure_ServiceUnavailable 
Failure_ServerTimeout 
Failure_SIPVersionNotSupported 
Failure_MessageTooLarge 
GlobalFailure_BusyEverywhere 
GlobalFailure_Decline 
GlobalFailure_DoesNotExistAnywhere 
GlobalFailure_NotAcceptable 
MaxStatusCode 


Constructor & Destructor Documentation

SIP_PDU::SIP_PDU ( Methods  method = SIP_PDU::NumMethods  ) 

SIP_PDU::SIP_PDU ( const SIP_PDU request,
StatusCodes  code,
const char *  contact = NULL,
const char *  extra = NULL,
const SDPSessionDescription sdp = NULL 
)

Construct a Response message extra is passed as message body

SIP_PDU::SIP_PDU ( const SIP_PDU  ) 

SIP_PDU::~SIP_PDU (  ) 


Member Function Documentation

void SIP_PDU::AdjustVia ( OpalTransport transport  ) 

Update the VIA field following RFC3261, 18.2.1 and RFC3581.

PString SIP_PDU::Build (  ) 

Construct the PDU string to output. Returns the total length of the PDU.

PString SIP_PDU::CreateVia ( SIPEndPoint endpoint,
const OpalTransport transport,
SIPConnection connection = NULL 
)

const PString& SIP_PDU::GetEntityBody (  )  const [inline]

const PString& SIP_PDU::GetInfo (  )  const [inline]

Methods SIP_PDU::GetMethod (  )  const [inline]

SIPMIMEInfo& SIP_PDU::GetMIME (  )  [inline]

const SIPMIMEInfo& SIP_PDU::GetMIME (  )  const [inline]

SDPSessionDescription* SIP_PDU::GetSDP (  ) 

StatusCodes SIP_PDU::GetStatusCode (  )  const [inline]

static const char* SIP_PDU::GetStatusCodeDescription ( int  code  )  [static]

PString SIP_PDU::GetTransactionID (  )  const

const SIPURL& SIP_PDU::GetURI (  )  const [inline]

unsigned SIP_PDU::GetVersionMajor (  )  const [inline]

unsigned SIP_PDU::GetVersionMinor (  )  const [inline]

void SIP_PDU::InitialiseHeaders ( SIPConnection connection,
const OpalTransport transport 
)

void SIP_PDU::InitialiseHeaders ( SIPDialogContext dialog,
const PString &  via = PString::Empty() 
)

void SIP_PDU::InitialiseHeaders ( const SIPURL dest,
const SIPURL to,
const SIPURL from,
const PString &  callID,
unsigned  cseq,
const PString &  via 
)

SIP_PDU& SIP_PDU::operator= ( const SIP_PDU  ) 

void SIP_PDU::PrintOn ( ostream &  strm  )  const

PBoolean SIP_PDU::Read ( OpalTransport transport  ) 

Read PDU from the specified transport.

bool SIP_PDU::SendResponse ( OpalTransport transport,
SIP_PDU response,
SIPEndPoint endpoint = NULL 
)

bool SIP_PDU::SendResponse ( OpalTransport transport,
StatusCodes  code,
SIPEndPoint endpoint = NULL,
const char *  contact = NULL,
const char *  extra = NULL 
)

Write PDU as a response to a request.

void SIP_PDU::SetAllow ( unsigned  bitmask  ) 

Set mime allow field to all supported methods.

void SIP_PDU::SetEntityBody ( const PString &  body  )  [inline]

void SIP_PDU::SetInfo ( const PString &  info  )  [inline]

bool SIP_PDU::SetRoute ( const SIPURL proxy  ) 

bool SIP_PDU::SetRoute ( const PStringList &  routeSet  ) 

Add and populate Route header following the given routeSet. If first route is strict, exchange with URI. Returns PTrue if routeSet.

void SIP_PDU::SetSDP ( SDPSessionDescription sdp  ) 

void SIP_PDU::SetStatusCode ( StatusCodes  c  )  [inline]

void SIP_PDU::SetURI ( const SIPURL newuri  )  [inline]

PBoolean SIP_PDU::Write ( OpalTransport transport,
const OpalTransportAddress remoteAddress = OpalTransportAddress(),
const PString &  localInterface = PString::Empty() 
)

Write the PDU to the transport.


Friends And Related Function Documentation

ostream& operator<< ( ostream &  strm,
StatusCodes  status 
) [friend]


Field Documentation

PString SIP_PDU::m_entityBody [protected]

PString SIP_PDU::m_info [protected]

Methods SIP_PDU::m_method [protected]

SIPMIMEInfo SIP_PDU::m_mime [protected]

SDPSessionDescription* SIP_PDU::m_SDP [protected]

StatusCodes SIP_PDU::m_statusCode [protected]

PString SIP_PDU::m_transactionID [mutable, protected]

SIPURL SIP_PDU::m_uri [protected]

bool SIP_PDU::m_usePeerTransportAddress [protected]

unsigned SIP_PDU::m_versionMajor [protected]

unsigned SIP_PDU::m_versionMinor [protected]


The documentation for this class was generated from the following file:
Generated on Mon Feb 21 20:19:24 2011 for OPAL by  doxygen 1.4.7