sippdu.h
Go to the documentation of this file.
/*
* sippdu.h
*
* Session Initiation Protocol PDU support.
*
* Open Phone Abstraction Library (OPAL)
* Formally known as the Open H323 project.
*
* Copyright (c) 2002 Equivalence Pty. Ltd.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Open Phone Abstraction Library.
*
* The Initial Developer of the Original Code is Equivalence Pty. Ltd.
*
* Contributor(s): ______________________________________.
*
* $Revision: 29080 $
* $Author: rjongbloed $
* $Date: 2013-02-12 18:52:05 -0600 (Tue, 12 Feb 2013) $
*/
#ifndef OPAL_SIP_SIPPDU_H
#define OPAL_SIP_SIPPDU_H
#ifdef P_USE_PRAGMA
#pragma interface
#endif
#include <opal/buildopts.h>
#if OPAL_SIP
#include <ptclib/mime.h>
#include <ptclib/url.h>
#include <ptclib/http.h>
#include <sip/sdp.h>
#include <opal/rtpconn.h>
class OpalTransport;
class OpalTransportAddress;
class OpalProductInfo;
class SIPEndPoint;
class SIPConnection;
class SIP_PDU;
class SIPSubscribeHandler;
class SIPDialogContext;
class SIPMIMEInfo;
// SIPURL
class SIPURL : public PURL
{
PCLASSINFO(SIPURL, PURL);
public:
SIPURL();
SIPURL(
const PURL & url
) : PURL(url) { }
SIPURL & operator=(
const PURL & url
) { PURL::operator=(url); return *this; }
SIPURL(
const char * cstr,
const char * defaultScheme = NULL
);
SIPURL & operator=(
const char * cstr
) { Parse(cstr); return *this; }
SIPURL(
const PString & str,
const char * defaultScheme = NULL
);
SIPURL & operator=(
const PString & str
) { Parse(str); return *this; }
SIPURL(
const PString & name,
const OpalTransportAddress & address,
WORD listenerPort = 0
);
SIPURL(
const OpalTransportAddress & address,
WORD listenerPort = 0
);
SIPURL & operator=(
const OpalTransportAddress & address
);
SIPURL(
const SIPMIMEInfo & mime,
const char * name
);
virtual Comparison Compare(
const PObject & obj
) const;
PString AsQuotedString() const;
PString GetDisplayName(PBoolean useDefault = true) const;
void SetDisplayName(const PString & str)
{
m_displayName = str;
}
const PStringOptions & GetFieldParameters() const { return m_fieldParameters; }
PStringOptions & GetFieldParameters() { return m_fieldParameters; }
OpalTransportAddress GetHostAddress() const;
void SetHostAddress(const OpalTransportAddress & addr);
enum UsageContext {
ExternalURI,
RequestURI,
ToURI,
FromURI,
RouteURI,
RedirectURI,
ContactURI,
RegContactURI,
RegisterURI
};
void Sanitise(
UsageContext context
);
PBoolean AdjustToDNS(
PINDEX entry = 0
);
static PString GenerateTag();
void SetTag(
const PString & tag = PString::Empty(),
bool force = false
);
protected:
void ParseAsAddress(const PString & name, const OpalTransportAddress & _address, WORD listenerPort = 0);
// Override from PURL()
virtual PBoolean InternalParse(
const char * cstr,
const char * defaultScheme
) { return ReallyInternalParse(false, cstr, defaultScheme); }
bool ReallyInternalParse(
bool fromField,
const char * cstr,
const char * defaultScheme
);
PString m_displayName;
PStringOptions m_fieldParameters;
};
class SIPURLList : public std::list<SIPURL>
{
public:
bool FromString(
const PString & str,
SIPURL::UsageContext context = SIPURL::RouteURI,
bool reversed = false
);
PString ToString() const;
friend ostream & operator<<(ostream & strm, const SIPURLList & urls);
};
// SIPMIMEInfo
class SIPMIMEInfo : public PMIMEInfo
{
PCLASSINFO(SIPMIMEInfo, PMIMEInfo);
public:
SIPMIMEInfo(bool compactForm = false);
virtual void PrintOn(ostream & strm) const;
virtual bool InternalAddMIME(const PString & fieldName, const PString & fieldValue);
void SetCompactForm(bool form) { compactForm = form; }
PCaselessString GetContentType(bool includeParameters = false) const;
void SetContentType(const PString & v);
PCaselessString GetContentEncoding() const;
void SetContentEncoding(const PString & v);
SIPURL GetFrom() const;
void SetFrom(const PString & v);
SIPURL GetPAssertedIdentity() const;
void SetPAssertedIdentity(const PString & v);
SIPURL GetPPreferredIdentity() const;
void SetPPreferredIdentity(const PString & v);
PString GetAccept() const;
void SetAccept(const PString & v);
PString GetAcceptEncoding() const;
void SetAcceptEncoding(const PString & v);
PString GetAcceptLanguage() const;
void SetAcceptLanguage(const PString & v);
PString GetAllow() const;
unsigned GetAllowBitMask() const;
void SetAllow(const PString & v);
PString GetCallID() const;
void SetCallID(const PString & v);
SIPURL GetContact() const;
bool GetContacts(SIPURLList & contacts) const;
void SetContact(const PString & v);
PString GetSubject() const;
void SetSubject(const PString & v);
SIPURL GetTo() const;
void SetTo(const PString & v);
PString GetVia() const;
void SetVia(const PString & v);
bool GetViaList(PStringList & v) const;
void SetViaList(const PStringList & v);
PString GetFirstVia() const;
OpalTransportAddress GetViaReceivedAddress() const;
SIPURL GetReferTo() const;
void SetReferTo(const PString & r);
SIPURL GetReferredBy() const;
void SetReferredBy(const PString & r);
PINDEX GetContentLength() const;
void SetContentLength(PINDEX v);
PBoolean IsContentLengthPresent() const;
PString GetCSeq() const;
void SetCSeq(const PString & v);
PString GetDate() const;
void SetDate(const PString & v);
void SetDate(const PTime & t);
void SetDate(void); // set to current date
unsigned GetExpires(unsigned dflt = UINT_MAX) const;// returns default value if not found
void SetExpires(unsigned v);
PINDEX GetMaxForwards() const;
void SetMaxForwards(PINDEX v);
PINDEX GetMinExpires() const;
void SetMinExpires(PINDEX v);
PString GetProxyAuthenticate() const;
void SetProxyAuthenticate(const PString & v);
PString GetRoute() const;
bool GetRoute(SIPURLList & proxies) const;
void SetRoute(const PString & v);
void SetRoute(const SIPURLList & proxies);
PString GetRecordRoute() const;
bool GetRecordRoute(SIPURLList & proxies, bool reversed) const;
void SetRecordRoute(const PString & v);
void SetRecordRoute(const SIPURLList & proxies);
unsigned GetCSeqIndex() const { return GetCSeq().AsUnsigned(); }
PStringSet GetRequire() const;
void SetRequire(const PStringSet & v);
void AddRequire(const PString & v);
PStringSet GetSupported() const;
void SetSupported(const PStringSet & v);
void AddSupported(const PString & v);
PStringSet GetUnsupported() const;
void SetUnsupported(const PStringSet & v);
void AddUnsupported(const PString & v);
PString GetEvent() const;
void SetEvent(const PString & v);
PCaselessString GetSubscriptionState(PStringToString & info) const;
void SetSubscriptionState(const PString & v);
PString GetUserAgent() const;
void SetUserAgent(const PString & v);
PString GetOrganization() const;
void SetOrganization(const PString & v);
void GetProductInfo(OpalProductInfo & info) const;
void SetProductInfo(const PString & ua, const OpalProductInfo & info);
PString GetWWWAuthenticate() const;
void SetWWWAuthenticate(const PString & v);
PString GetSIPIfMatch() const;
void SetSIPIfMatch(const PString & v);
PString GetSIPETag() const;
void SetSIPETag(const PString & v);
void GetAlertInfo(PString & info, int & appearance);
void SetAlertInfo(const PString & info, int appearance);
PString GetCallInfo() const;
PString GetAllowEvents() const;
void SetAllowEvents(const PString & v);
PString GetFieldParameter(
const PString & fieldName,
const PString & paramName,
const PString & defaultValue = PString::Empty()
) const { return ExtractFieldParameter((*this)(fieldName), paramName, defaultValue); }
void SetFieldParameter(
const PString & fieldName,
const PString & paramName,
const PString & newValue
) { SetAt(fieldName, InsertFieldParameter((*this)(fieldName), paramName, newValue)); }
static PString ExtractFieldParameter(
const PString & fieldValue,
const PString & paramName,
const PString & defaultValue = PString::Empty()
);
static PString InsertFieldParameter(
const PString & fieldValue,
const PString & paramName,
const PString & newValue
);
protected:
PStringSet GetTokenSet(const char * field) const;
void AddTokenSet(const char * field, const PString & token);
void SetTokenSet(const char * field, const PStringSet & tokens);
bool compactForm;
};
// SIPAuthentication
typedef PHTTPClientAuthentication SIPAuthentication;
class SIPAuthenticator : public PHTTPClientAuthentication::AuthObject
{
public:
SIPAuthenticator(SIP_PDU & pdu);
virtual PMIMEInfo & GetMIME();
virtual PString GetURI();
virtual PString GetEntityBody();
virtual PString GetMethod();
protected:
SIP_PDU & m_pdu;
};
// SIP_PDU
class SIP_PDU : public PSafeObject
{
PCLASSINFO(SIP_PDU, PSafeObject);
public:
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,
Method_PRACK,
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
};
static const char * GetStatusCodeDescription(int code);
friend ostream & operator<<(ostream & strm, StatusCodes status);
SIP_PDU(
Methods method = SIP_PDU::NumMethods
);
SIP_PDU(
const SIP_PDU & request,
StatusCodes code,
const SDPSessionDescription * sdp = NULL
);
SIP_PDU(const SIP_PDU &);
SIP_PDU & operator=(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(),
unsigned cseq = 0
);
void InitialiseHeaders(
SIPConnection & connection,
const OpalTransport & transport,
unsigned cseq = 0
);
void InitialiseHeaders(
const SIP_PDU & request
);
bool SetRoute(const SIPURLList & routeSet);
bool SetRoute(const SIPURL & proxy);
void SetAllow(unsigned bitmask);
void AdjustVia(OpalTransport & transport);
PString CreateVia(
SIPEndPoint & endpoint,
const OpalTransport & transport
);
SIP_PDU::StatusCodes 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;
bool SendResponse(
OpalTransport & transport,
SIP_PDU & response,
SIPEndPoint * endpoint = NULL
) const;
PString Build();
PString GetTransactionID() const;
Methods GetMethod() const { return m_method; }
StatusCodes GetStatusCode () const { return m_statusCode; }
void SetStatusCode (StatusCodes c) { m_statusCode = c; }
const SIPURL & GetURI() const { return m_uri; }
void SetURI(const SIPURL & newuri) { m_uri = newuri; }
unsigned GetVersionMajor() const { return m_versionMajor; }
unsigned GetVersionMinor() const { return m_versionMinor; }
void SetCSeq(unsigned cseq);
const PString & GetEntityBody() const { return m_entityBody; }
void SetEntityBody(const PString & body) { m_entityBody = body; }
void SetEntityBody();
const PString & GetInfo() const { return m_info; }
void SetInfo(const PString & info) { m_info = info; }
const SIPMIMEInfo & GetMIME() const { return m_mime; }
SIPMIMEInfo & GetMIME() { return m_mime; }
SDPSessionDescription * GetSDP(const OpalMediaFormatList & masterList);
void SetSDP(SDPSessionDescription * sdp);
protected:
Methods m_method; // Request type, ==NumMethods for Response
StatusCodes m_statusCode;
SIPURL m_uri; // display name & URI, no tag
unsigned m_versionMajor;
unsigned m_versionMinor;
PString m_info;
SIPMIMEInfo m_mime;
PString m_entityBody;
SDPSessionDescription * m_SDP;
mutable PString m_transactionID;
};
PQUEUE(SIP_PDU_Queue, SIP_PDU);
#if PTRACING
ostream & operator<<(ostream & strm, SIP_PDU::Methods method);
#endif
// SIPDialogContext
class SIPDialogContext
{
public:
SIPDialogContext();
SIPDialogContext(const SIPMIMEInfo & mime);
PString AsString() const;
bool FromString(
const PString & str
);
const PString & GetCallID() const { return m_callId; }
void SetCallID(const PString & id) { m_callId = id; }
const SIPURL & GetRequestURI() const { return m_requestURI; }
void SetRequestURI(const SIPURL & url) { m_requestURI = url; }
const PString & GetLocalTag() const { return m_localTag; }
void SetLocalTag(const PString & tag) { m_localTag = tag; }
const SIPURL & GetLocalURI() const { return m_localURI; }
void SetLocalURI(const SIPURL & url);
const PString & GetRemoteTag() const { return m_remoteTag; }
void SetRemoteTag(const PString & tag) { m_remoteTag = tag; }
const SIPURL & GetRemoteURI() const { return m_remoteURI; }
void SetRemoteURI(const SIPURL & url);
const SIPURLList & GetRouteSet() const { return m_routeSet; }
void SetRouteSet(const PString & str) { m_routeSet.FromString(str); }
const SIPURL & GetProxy() const { return m_proxy; }
void SetProxy(const SIPURL & proxy, bool addToRouteSet);
void Update(OpalTransport & transport, const SIP_PDU & response);
unsigned GetNextCSeq();
void IncrementCSeq(unsigned inc) { m_lastSentCSeq += inc; }
bool IsDuplicateCSeq(unsigned sequenceNumber);
bool IsEstablished() const
{
return !m_callId.IsEmpty() &&
!m_requestURI.IsEmpty() &&
!m_localTag.IsEmpty() &&
!m_remoteTag.IsEmpty();
}
OpalTransportAddress GetRemoteTransportAddress() const;
void SetForking(bool f) { m_forking = f; }
protected:
PString m_callId;
SIPURL m_requestURI;
SIPURL m_localURI;
PString m_localTag;
SIPURL m_remoteURI;
PString m_remoteTag;
SIPURLList m_routeSet;
unsigned m_lastSentCSeq;
unsigned m_lastReceivedCSeq;
OpalTransportAddress m_externalTransportAddress;
bool m_forking;
SIPURL m_proxy;
};
struct SIPParameters
{
SIPParameters(
const PString & aor = PString::Empty(),
const PString & remote = PString::Empty()
);
void Normalise(
const PString & defaultUser,
const PTimeInterval & defaultExpire
);
PCaselessString m_remoteAddress;
PCaselessString m_localAddress;
PCaselessString m_proxyAddress;
PCaselessString m_addressOfRecord;
PCaselessString m_contactAddress;
PCaselessString m_interface;
SIPMIMEInfo m_mime;
PString m_authID;
PString m_password;
PString m_realm;
unsigned m_expire;
unsigned m_restoreTime;
PTimeInterval m_minRetryTime;
PTimeInterval m_maxRetryTime;
void * m_userData;
};
#if PTRACING
ostream & operator<<(ostream & strm, const SIPParameters & params);
#endif
// SIPTransaction
class SIPTransaction : public SIP_PDU
{
PCLASSINFO(SIPTransaction, SIP_PDU);
public:
SIPTransaction(
Methods method,
SIPEndPoint & endpoint,
OpalTransport & transport
);
SIPTransaction(
Methods method,
SIPConnection & connection
);
~SIPTransaction();
/* Under some circumstances a new transaction with all the same parameters
but different ID needs to be created, e.g. when get authentication error. */
virtual SIPTransaction * CreateDuplicate() const = 0;
PBoolean Start();
bool IsTrying() const { return m_state == Trying; }
bool IsProceeding() const { return m_state == Proceeding; }
bool IsInProgress() const { return m_state == Trying || m_state == Proceeding; }
bool IsFailed() const { return m_state > Terminated_Success; }
bool IsCompleted() const { return m_state >= Completed; }
bool IsCanceled() const { return m_state == Cancelling || m_state == Terminated_Cancelled || m_state == Terminated_Aborted; }
bool IsTerminated() const { return m_state >= Terminated_Success; }
void WaitForCompletion();
PBoolean Cancel();
void Abort();
virtual PBoolean OnReceivedResponse(SIP_PDU & response);
virtual PBoolean OnCompleted(SIP_PDU & response);
OpalTransport & GetTransport() const { return m_transport; }
SIPConnection * GetConnection() const { return m_connection; }
PString GetInterface() const { return m_localInterface; }
void SetInterface(const PString & localIf) { m_localInterface = localIf; }
static PString GenerateCallID();
protected:
bool SendPDU(SIP_PDU & pdu);
bool ResendCANCEL();
void SetParameters(const SIPParameters & params);
PDECLARE_NOTIFIER(PTimer, SIPTransaction, OnRetry);
PDECLARE_NOTIFIER(PTimer, SIPTransaction, OnTimeout);
enum States {
NotStarted,
Trying,
Proceeding,
Cancelling,
Completed,
Terminated_Success,
Terminated_Timeout,
Terminated_RetriesExceeded,
Terminated_TransportError,
Terminated_Cancelled,
Terminated_Aborted,
NumStates
};
virtual void SetTerminated(States newState);
SIPEndPoint & m_endpoint;
OpalTransport & m_transport;
PSafePtr<SIPConnection> m_connection;
PTimeInterval m_retryTimeoutMin;
PTimeInterval m_retryTimeoutMax;
States m_state;
unsigned m_retry;
PTimer m_retryTimer;
PTimer m_completionTimer;
PSyncPoint m_completed;
PString m_localInterface;
OpalTransportAddress m_remoteAddress;
};
#define OPAL_PROXY_PARAM "OPAL-proxy"
#define OPAL_LOCAL_ID_PARAM "OPAL-local-id"
#define OPAL_INTERFACE_PARAM "OPAL-interface"
// SIPResponse
class SIPResponse : public SIPTransaction
{
PCLASSINFO(SIPResponse, SIPTransaction);
public:
SIPResponse(
SIPEndPoint & endpoint,
StatusCodes code
);
virtual SIPTransaction * CreateDuplicate() const;
bool Send(OpalTransport & transport, const SIP_PDU & command);
};
// SIPInvite
class SIPInvite : public SIPTransaction
{
PCLASSINFO(SIPInvite, SIPTransaction);
public:
SIPInvite(
SIPConnection & connection,
const OpalRTPSessionManager & sm
);
virtual SIPTransaction * CreateDuplicate() const;
virtual PBoolean OnReceivedResponse(SIP_PDU & response);
const OpalRTPSessionManager & GetSessionManager() const { return m_rtpSessions; }
OpalRTPSessionManager & GetSessionManager() { return m_rtpSessions; }
protected:
OpalRTPSessionManager m_rtpSessions;
};
/* This is the ACK request sent when receiving a response to an outgoing
* INVITE.
*/
class SIPAck : public SIP_PDU
{
PCLASSINFO(SIPAck, SIP_PDU);
public:
SIPAck(
SIPTransaction & invite,
SIP_PDU & response
);
virtual SIPTransaction * CreateDuplicate() const;
};
/* This is a BYE request
*/
class SIPBye : public SIPTransaction
{
PCLASSINFO(SIPBye, SIPTransaction);
public:
SIPBye(
SIPEndPoint & ep,
OpalTransport & trans,
SIPDialogContext dialog
);
SIPBye(
SIPConnection & conn
);
virtual SIPTransaction * CreateDuplicate() const;
};
class SIPRegister : public SIPTransaction
{
PCLASSINFO(SIPRegister, SIPTransaction);
public:
enum CompatibilityModes {
e_FullyCompliant,
e_CannotRegisterMultipleContacts,
e_CannotRegisterPrivateContacts,
e_HasApplicationLayerGateway
};
struct Params : public SIPParameters {
Params()
: m_registrarAddress(m_remoteAddress)
, m_compatibility(SIPRegister::e_FullyCompliant)
{ }
Params(const Params & param)
: SIPParameters(param)
, m_registrarAddress(m_remoteAddress)
, m_compatibility(param.m_compatibility)
{ }
PCaselessString & m_registrarAddress; // For backward compatibility
CompatibilityModes m_compatibility;
};
SIPRegister(
SIPEndPoint & endpoint,
OpalTransport & transport,
const PString & callId,
unsigned cseq,
const Params & params
);
virtual SIPTransaction * CreateDuplicate() const;
};
#if PTRACING
ostream & operator<<(ostream & strm, SIPRegister::CompatibilityModes mode);
ostream & operator<<(ostream & strm, const SIPRegister::Params & params);
#endif
class SIPSubscribe : public SIPTransaction
{
PCLASSINFO(SIPSubscribe, SIPTransaction);
public:
enum PredefinedPackages {
MessageSummary,
Presence,
Dialog,
NumPredefinedPackages,
Watcher = 0x8000,
MessageSummaryWatcher = Watcher|MessageSummary,
PresenceWatcher = Watcher|Presence,
DialogWatcher = Watcher|Dialog,
PackageMask = Watcher-1
};
friend PredefinedPackages operator|(PredefinedPackages p1, PredefinedPackages p2) { return (PredefinedPackages)((int)p1|(int)p2); }
class EventPackage : public PCaselessString
{
PCLASSINFO(EventPackage, PCaselessString);
public:
EventPackage(PredefinedPackages = NumPredefinedPackages);
explicit EventPackage(const PString & str) : PCaselessString(str) { }
explicit EventPackage(const char * str) : PCaselessString(str) { }
EventPackage & operator=(PredefinedPackages pkg);
EventPackage & operator=(const PString & str) { PCaselessString::operator=(str); return *this; }
EventPackage & operator=(const char * str) { PCaselessString::operator=(str); return *this; }
bool operator==(PredefinedPackages pkg) const { return Compare(EventPackage(pkg)) == EqualTo; }
bool operator==(const PString & str) const { return Compare(str) == EqualTo; }
bool operator==(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) == EqualTo; }
virtual Comparison InternalCompare(PINDEX offset, PINDEX length, const char * cstr) const;
bool IsWatcher() const;
};
struct SubscriptionStatus {
SIPSubscribeHandler * m_handler;
PString m_addressofRecord;
bool m_wasSubscribing;
bool m_reSubscribing;
SIP_PDU::StatusCodes m_reason;
OpalProductInfo m_productInfo;
void * m_userData;
};
struct NotifyCallbackInfo {
NotifyCallbackInfo(
SIPEndPoint & ep,
OpalTransport & trans,
SIP_PDU & notify,
SIP_PDU & response
);
bool SendResponse(
SIP_PDU::StatusCodes status,
const char * extra = NULL
);
SIPEndPoint & m_endpoint;
OpalTransport & m_transport;
SIP_PDU & m_notify;
SIP_PDU & m_response;
bool m_sendResponse;
};
struct Params : public SIPParameters
{
Params(PredefinedPackages pkg = NumPredefinedPackages)
: m_agentAddress(m_remoteAddress)
, m_eventPackage(pkg)
, m_eventList(false)
{ }
Params(const Params & param)
: SIPParameters(param)
, m_agentAddress(m_remoteAddress)
, m_eventPackage(param.m_eventPackage)
, m_eventList(param.m_eventList)
, m_contentType(param.m_contentType)
, m_onSubcribeStatus(param.m_onSubcribeStatus)
, m_onNotify(param.m_onNotify)
{ }
PCaselessString & m_agentAddress; // For backward compatibility
EventPackage m_eventPackage;
bool m_eventList; // Enable RFC4662
PCaselessString m_contentType; // May be \n separated list of types
PNotifierTemplate<const SubscriptionStatus &> m_onSubcribeStatus;
PNotifierTemplate<NotifyCallbackInfo &> m_onNotify;
};
SIPSubscribe(
SIPEndPoint & ep,
OpalTransport & trans,
SIPDialogContext & dialog,
const Params & params
);
virtual SIPTransaction * CreateDuplicate() const;
};
#if PTRACING
ostream & operator<<(ostream & strm, const SIPSubscribe::Params & params);
#endif
typedef SIPSubscribe::EventPackage SIPEventPackage;
class SIPHandler;
class SIPEventPackageHandler
{
public:
virtual ~SIPEventPackageHandler() { }
virtual PCaselessString GetContentType() const = 0;
virtual bool ValidateContentType(const PString & type, const SIPMIMEInfo & mime);
virtual bool OnReceivedNOTIFY(SIPHandler & handler, SIP_PDU & request) = 0;
virtual PString OnSendNOTIFY(SIPHandler & /*handler*/, const PObject * /*body*/) { return PString::Empty(); }
};
typedef PFactory<SIPEventPackageHandler, SIPEventPackage> SIPEventPackageFactory;
class SIPNotify : public SIPTransaction
{
PCLASSINFO(SIPNotify, SIPTransaction);
public:
SIPNotify(
SIPEndPoint & ep,
OpalTransport & trans,
SIPDialogContext & dialog,
const SIPEventPackage & eventPackage,
const PString & state,
const PString & body
);
virtual SIPTransaction * CreateDuplicate() const;
};
class SIPPublish : public SIPTransaction
{
PCLASSINFO(SIPPublish, SIPTransaction);
public:
SIPPublish(
SIPEndPoint & ep,
OpalTransport & trans,
const PString & id,
const PString & sipIfMatch,
const SIPSubscribe::Params & params,
const PString & body
);
virtual SIPTransaction * CreateDuplicate() const;
};
class SIPRefer : public SIPTransaction
{
PCLASSINFO(SIPRefer, SIPTransaction);
public:
SIPRefer(
SIPConnection & connection,
const SIPURL & referTo,
const SIPURL & referred_by,
bool referSub
);
virtual SIPTransaction * CreateDuplicate() const;
};
/* This is not a generic NOTIFY PDU, but the minimal one
* that gets sent when receiving a REFER
*/
class SIPReferNotify : public SIPTransaction
{
PCLASSINFO(SIPReferNotify, SIPTransaction);
public:
SIPReferNotify(
SIPConnection & connection,
StatusCodes code
);
virtual SIPTransaction * CreateDuplicate() const;
};
/* This is a MESSAGE PDU, with a body
*/
class SIPMessage : public SIPTransaction
{
PCLASSINFO(SIPMessage, SIPTransaction);
public:
struct Params : public SIPParameters
{
Params()
: m_contentType("text/plain;charset=UTF-8")
{
m_expire = 5000;
}
PCaselessString m_contentType;
PString m_id;
PString m_body;
PAtomicInteger::IntegerType m_messageId;
};
SIPMessage(
SIPEndPoint & ep,
OpalTransport & trans,
const Params & params
);
SIPMessage(
SIPConnection & connection,
const Params & params
);
virtual SIPTransaction * CreateDuplicate() const;
const SIPURL & GetLocalAddress() const { return m_localAddress; }
private:
void Construct(const Params & params);
SIPURL m_localAddress;
};
/* This is an OPTIONS request
*/
class SIPOptions : public SIPTransaction
{
PCLASSINFO(SIPOptions, SIPTransaction);
public:
struct Params : public SIPParameters
{
Params()
: m_acceptContent("application/sdp, application/media_control+xml, application/dtmf, application/dtmf-relay")
{
}
PCaselessString m_acceptContent;
PCaselessString m_contentType;
PString m_body;
};
SIPOptions(
SIPEndPoint & ep,
OpalTransport & trans,
const PString & id,
const Params & params
);
SIPOptions(
SIPConnection & conn,
const Params & params
);
virtual SIPTransaction * CreateDuplicate() const;
protected:
void Construct(const Params & params);
};
/* This is an INFO request
*/
class SIPInfo : public SIPTransaction
{
PCLASSINFO(SIPInfo, SIPTransaction);
public:
struct Params
{
Params(const PString & contentType = PString::Empty(),
const PString & body = PString::Empty())
: m_contentType(contentType)
, m_body(body)
{
}
PCaselessString m_contentType;
PString m_body;
};
SIPInfo(
SIPConnection & conn,
const Params & params
);
virtual SIPTransaction * CreateDuplicate() const;
};
/* This is a PING PDU, with a body
*/
class SIPPing : public SIPTransaction
{
PCLASSINFO(SIPPing, SIPTransaction);
public:
SIPPing(
SIPEndPoint & ep,
OpalTransport & trans,
const SIPURL & address
);
virtual SIPTransaction * CreateDuplicate() const;
};
/* This is a PRACK PDU
*/
class SIPPrack : public SIPTransaction
{
PCLASSINFO(SIPPrack, SIPTransaction);
public:
SIPPrack(
SIPConnection & conn,
const PString & rack
);
virtual SIPTransaction * CreateDuplicate() const;
};
#endif // OPAL_SIP
#endif // OPAL_SIP_SIPPDU_H
// End of File ///////////////////////////////////////////////////////////////
SIPSubscribe::Watcher
Definition: sippdu.h:1108
SIPSubscribe::Params::m_onSubcribeStatus
PNotifierTemplate< const SubscriptionStatus & > m_onSubcribeStatus
Definition: sippdu.h:1192
SIPMIMEInfo::ExtractFieldParameter
static PString ExtractFieldParameter(const PString &fieldValue, const PString &paramName, const PString &defaultValue=PString::Empty())
SIPReferNotify::SIPReferNotify
SIPReferNotify(SIPConnection &connection, StatusCodes code)
SIPMIMEInfo::SetUserAgent
void SetUserAgent(const PString &v)
SIPSubscribe::EventPackage
Definition: sippdu.h:1118
SIPURL::ReallyInternalParse
bool ReallyInternalParse(bool fromField, const char *cstr, const char *defaultScheme)
SIPParameters::m_contactAddress
PCaselessString m_contactAddress
Definition: sippdu.h:822
SIPAuthenticator::m_pdu
SIP_PDU & m_pdu
Definition: sippdu.h:483
SIPMIMEInfo::GetRecordRoute
PString GetRecordRoute() const
SIPURL
Definition: sippdu.h:70
SIPBye::SIPBye
SIPBye(SIPEndPoint &ep, OpalTransport &trans, SIPDialogContext dialog)
SIPMIMEInfo::GetFieldParameter
PString GetFieldParameter(const PString &fieldName, const PString &paramName, const PString &defaultValue=PString::Empty()) const
Definition: sippdu.h:424
SIPAuthenticator::GetMethod
virtual PString GetMethod()
SIPRegister::e_CannotRegisterMultipleContacts
Definition: sippdu.h:1044
SIP_PDU::Failure_NotAcceptableHere
Definition: sippdu.h:566
SIPMIMEInfo::GetOrganization
PString GetOrganization() const
SIPTransaction::m_retryTimeoutMin
PTimeInterval m_retryTimeoutMin
Definition: sippdu.h:926
SIPDialogContext::GetProxy
const SIPURL & GetProxy() const
Definition: sippdu.h:766
SIPSubscribe::PackageMask
Definition: sippdu.h:1114
SIP_PDU::AdjustVia
void AdjustVia(OpalTransport &transport)
SIP_PDU::Failure_Ambiguous
Definition: sippdu.h:563
SIP_PDU::operator=
SIP_PDU & operator=(const SIP_PDU &)
SIP_PDU::Method_CANCEL
Definition: sippdu.h:505
SIP_PDU::Method_INFO
Definition: sippdu.h:511
SIP_PDU::GlobalFailure_NotAcceptable
Definition: sippdu.h:582
SIPOptions::SIPOptions
SIPOptions(SIPEndPoint &ep, OpalTransport &trans, const PString &id, const Params &params)
SIP_PDU::m_method
Methods m_method
Definition: sippdu.h:706
SIPParameters::m_interface
PCaselessString m_interface
Definition: sippdu.h:823
SIPInvite::OnReceivedResponse
virtual PBoolean OnReceivedResponse(SIP_PDU &response)
SIPMIMEInfo::SetFrom
void SetFrom(const PString &v)
SIPMIMEInfo::GetAcceptLanguage
PString GetAcceptLanguage() const
SIPTransaction::IsInProgress
bool IsInProgress() const
Definition: sippdu.h:879
SIPURLList::operator<<
friend ostream & operator<<(ostream &strm, const SIPURLList &urls)
SIPResponse::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIP_PDU::Method_INVITE
Definition: sippdu.h:501
SIPSubscribe
Definition: sippdu.h:1095
SIPMIMEInfo::SetMaxForwards
void SetMaxForwards(PINDEX v)
SIPParameters::m_restoreTime
unsigned m_restoreTime
Definition: sippdu.h:829
SIPResponse
Definition: sippdu.h:950
SIPMIMEInfo::SetWWWAuthenticate
void SetWWWAuthenticate(const PString &v)
SIPMIMEInfo::AddRequire
void AddRequire(const PString &v)
SIP_PDU::GetVersionMinor
unsigned GetVersionMinor() const
Definition: sippdu.h:693
SIPMIMEInfo::GetReferTo
SIPURL GetReferTo() const
SIPMIMEInfo::GetAllowEvents
PString GetAllowEvents() const
SIPMIMEInfo::GetUnsupported
PStringSet GetUnsupported() const
SIPSubscribe::PredefinedPackages
PredefinedPackages
Definition: sippdu.h:1101
SIP_PDU::SetEntityBody
void SetEntityBody(const PString &body)
Definition: sippdu.h:696
PQUEUE
PQUEUE(SIP_PDU_Queue, SIP_PDU)
SIPTransaction
Definition: sippdu.h:854
SIPSubscribe::SubscriptionStatus::m_productInfo
OpalProductInfo m_productInfo
Server product info from registrar if available.
Definition: sippdu.h:1145
SIPMessage
Definition: sippdu.h:1310
SIPURL::AdjustToDNS
PBoolean AdjustToDNS(PINDEX entry=0)
SIP_PDU::GetMIME
SIPMIMEInfo & GetMIME()
Definition: sippdu.h:701
SIPMIMEInfo::SetContentEncoding
void SetContentEncoding(const PString &v)
SIPRegister::Params::m_registrarAddress
PCaselessString & m_registrarAddress
Definition: sippdu.h:1071
SIPMIMEInfo::GetVia
PString GetVia() const
SIPMIMEInfo::SetSIPIfMatch
void SetSIPIfMatch(const PString &v)
SIPMIMEInfo::SetProductInfo
void SetProductInfo(const PString &ua, const OpalProductInfo &info)
SIP_PDU::Local_Timeout
Definition: sippdu.h:522
SIPMIMEInfo::SetProxyAuthenticate
void SetProxyAuthenticate(const PString &v)
SIPSubscribe::SubscriptionStatus::m_reason
SIP_PDU::StatusCodes m_reason
Reason for status change.
Definition: sippdu.h:1144
SIPMIMEInfo
Definition: sippdu.h:275
SIPDialogContext::m_forking
bool m_forking
Definition: sippdu.h:799
SIPURL::ParseAsAddress
void ParseAsAddress(const PString &name, const OpalTransportAddress &_address, WORD listenerPort=0)
SIPMessage::Params
Definition: sippdu.h:1314
SIPBye::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPTransaction::m_retryTimer
PTimer m_retryTimer
Definition: sippdu.h:931
SIPRefer::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPMIMEInfo::SetAllow
void SetAllow(const PString &v)
SIPDialogContext::SetProxy
void SetProxy(const SIPURL &proxy, bool addToRouteSet)
SIPMIMEInfo::SetContentLength
void SetContentLength(PINDEX v)
SIPBye
Definition: sippdu.h:1016
SIPURL::AsQuotedString
PString AsQuotedString() const
SIPPing::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPSubscribe::NotifyCallbackInfo::NotifyCallbackInfo
NotifyCallbackInfo(SIPEndPoint &ep, OpalTransport &trans, SIP_PDU &notify, SIP_PDU &response)
SIPTransaction::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const =0
SIP_PDU::GetEntityBody
const PString & GetEntityBody() const
Definition: sippdu.h:695
SIPURL::InternalParse
virtual PBoolean InternalParse(const char *cstr, const char *defaultScheme)
Definition: sippdu.h:212
SIPMIMEInfo::SetContentType
void SetContentType(const PString &v)
buildopts.h
SIPURL::Compare
virtual Comparison Compare(const PObject &obj) const
SIPRegister::SIPRegister
SIPRegister(SIPEndPoint &endpoint, OpalTransport &transport, const PString &callId, unsigned cseq, const Params &params)
SIPMIMEInfo::PrintOn
virtual void PrintOn(ostream &strm) const
SIPEventPackageHandler::ValidateContentType
virtual bool ValidateContentType(const PString &type, const SIPMIMEInfo &mime)
SIP_PDU::Successful_OK
Definition: sippdu.h:530
SIPMIMEInfo::SetAcceptEncoding
void SetAcceptEncoding(const PString &v)
SIPMIMEInfo::GetAccept
PString GetAccept() const
SIP_PDU::GlobalFailure_DoesNotExistAnywhere
Definition: sippdu.h:581
SIPTransaction::GetTransport
OpalTransport & GetTransport() const
Definition: sippdu.h:892
SIPMIMEInfo::GetWWWAuthenticate
PString GetWWWAuthenticate() const
SIPInvite::GetSessionManager
OpalRTPSessionManager & GetSessionManager()
Definition: sippdu.h:987
SIPURL::SIPURL
SIPURL()
SIPConnection
Definition: sipcon.h:126
SIPMIMEInfo::InsertFieldParameter
static PString InsertFieldParameter(const PString &fieldValue, const PString &paramName, const PString &newValue)
SIPTransaction::m_completionTimer
PTimer m_completionTimer
Definition: sippdu.h:932
SIPAuthenticator::SIPAuthenticator
SIPAuthenticator(SIP_PDU &pdu)
SIPMIMEInfo::SetRequire
void SetRequire(const PStringSet &v)
SIPSubscribe::SubscriptionStatus::m_userData
void * m_userData
User data corresponding to this registration.
Definition: sippdu.h:1146
SIPTransaction::PDECLARE_NOTIFIER
PDECLARE_NOTIFIER(PTimer, SIPTransaction, OnRetry)
SIPRegister::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPMessage::Params::m_body
PString m_body
Definition: sippdu.h:1324
SIPTransaction::ResendCANCEL
bool ResendCANCEL()
SIP_PDU::SendResponse
bool SendResponse(OpalTransport &transport, StatusCodes code, SIPEndPoint *endpoint=NULL) const
SIPURL::SetTag
void SetTag(const PString &tag=PString::Empty(), bool force=false)
Set a tag with a new unique ID.
SIPDialogContext::m_remoteTag
PString m_remoteTag
Definition: sippdu.h:794
SIPTransaction::IsTrying
bool IsTrying() const
Definition: sippdu.h:877
SIP_PDU::Failure_PaymentRequired
Definition: sippdu.h:541
SIP_PDU::m_statusCode
StatusCodes m_statusCode
Definition: sippdu.h:707
OpalTransport
Definition: transports.h:703
SIP_PDU::Read
SIP_PDU::StatusCodes Read(OpalTransport &transport)
OpalRTPSessionManager
Definition: rtpconn.h:159
SIP_PDU::Method_SUBSCRIBE
Definition: sippdu.h:507
SIPTransaction::SIPTransaction
SIPTransaction(Methods method, SIPEndPoint &endpoint, OpalTransport &transport)
SIPParameters::m_maxRetryTime
PTimeInterval m_maxRetryTime
Definition: sippdu.h:831
SIPPrack
Definition: sippdu.h:1442
SIPSubscribe::Dialog
Definition: sippdu.h:1104
SIPSubscribe::Params
Definition: sippdu.h:1169
SIP_PDU::m_uri
SIPURL m_uri
Definition: sippdu.h:708
SIPSubscribe::EventPackage::EventPackage
EventPackage(PredefinedPackages=NumPredefinedPackages)
SIPEndPoint
Definition: sipep.h:86
SIP_PDU::GetInfo
const PString & GetInfo() const
Definition: sippdu.h:698
SIPMIMEInfo::GetProxyAuthenticate
PString GetProxyAuthenticate() const
SIPInfo::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIP_PDU::Failure_LoopDetected
Definition: sippdu.h:560
SIPMIMEInfo::GetAcceptEncoding
PString GetAcceptEncoding() const
SIPInfo::Params::m_contentType
PCaselessString m_contentType
Definition: sippdu.h:1406
SIPURL::GetFieldParameters
PStringOptions & GetFieldParameters()
Definition: sippdu.h:159
SIPSubscribe::Presence
Definition: sippdu.h:1103
SIP_PDU::Failure_RequestEntityTooLarge
Definition: sippdu.h:551
SIPTransaction::Terminated_RetriesExceeded
Definition: sippdu.h:915
SIPParameters::m_realm
PString m_realm
Definition: sippdu.h:827
SIP_PDU::GetSDP
SDPSessionDescription * GetSDP(const OpalMediaFormatList &masterList)
SIP_PDU::GlobalFailure_Decline
Definition: sippdu.h:580
SIP_PDU::Failure_NotImplemented
Definition: sippdu.h:572
SIPURL::m_displayName
PString m_displayName
Definition: sippdu.h:223
SIP_PDU::Failure_InternalServerError
Definition: sippdu.h:571
SIPDialogContext::SetLocalTag
void SetLocalTag(const PString &tag)
Definition: sippdu.h:752
SIPSubscribe::EventPackage::operator==
bool operator==(PredefinedPackages pkg) const
Definition: sippdu.h:1130
SIPOptions::Params::m_contentType
PCaselessString m_contentType
Definition: sippdu.h:1366
SIP_PDU::Successful_Accepted
Definition: sippdu.h:531
SIPTransaction::m_endpoint
SIPEndPoint & m_endpoint
Definition: sippdu.h:923
SIP_PDU::StatusCodes
StatusCodes
Definition: sippdu.h:518
SIP_PDU
Definition: sippdu.h:496
SIPMIMEInfo::SetExpires
void SetExpires(unsigned v)
SIPParameters::m_remoteAddress
PCaselessString m_remoteAddress
Definition: sippdu.h:818
SIPSubscribe::MessageSummaryWatcher
Definition: sippdu.h:1110
SIP_PDU::Failure_RequestTimeout
Definition: sippdu.h:547
SIP_PDU::m_SDP
SDPSessionDescription * m_SDP
Definition: sippdu.h:715
SIPMIMEInfo::AddSupported
void AddSupported(const PString &v)
SIPSubscribe::Params::m_agentAddress
PCaselessString & m_agentAddress
Definition: sippdu.h:1187
SIPMIMEInfo::SetDate
void SetDate(void)
SIPReferNotify
Definition: sippdu.h:1293
SIPURL::operator=
SIPURL & operator=(const PURL &url)
Definition: sippdu.h:79
SIPDialogContext::m_routeSet
SIPURLList m_routeSet
Definition: sippdu.h:795
SIPTransaction::Terminated_TransportError
Definition: sippdu.h:916
SIPMIMEInfo::GetViaList
bool GetViaList(PStringList &v) const
SIPMIMEInfo::GetCallID
PString GetCallID() const
SIPDialogContext::m_localURI
SIPURL m_localURI
Definition: sippdu.h:791
SIPDialogContext::GetLocalTag
const PString & GetLocalTag() const
Definition: sippdu.h:751
SIPMIMEInfo::SetCompactForm
void SetCompactForm(bool form)
Definition: sippdu.h:284
SIPMIMEInfo::GetPPreferredIdentity
SIPURL GetPPreferredIdentity() const
SIPSubscribe::EventPackage::operator=
EventPackage & operator=(const PString &str)
Definition: sippdu.h:1127
SIP_PDU::Failure_UnsupportedURIScheme
Definition: sippdu.h:554
SIPAuthenticator::GetEntityBody
virtual PString GetEntityBody()
SIPAck
Definition: sippdu.h:999
SIP_PDU::Method_REFER
Definition: sippdu.h:509
SIPURL::RegContactURI
Registration Contact header field.
Definition: sippdu.h:177
SIPDialogContext::m_proxy
SIPURL m_proxy
Definition: sippdu.h:800
SIP_PDU::GlobalFailure_BusyEverywhere
Definition: sippdu.h:579
SIPSubscribe::SubscriptionStatus::m_addressofRecord
PString m_addressofRecord
Address of record for registration.
Definition: sippdu.h:1141
SIPRegister::e_HasApplicationLayerGateway
Definition: sippdu.h:1052
SIPMIMEInfo::GetSIPETag
PString GetSIPETag() const
SIP_PDU::Method_MESSAGE
Definition: sippdu.h:510
SIPSubscribe::NotifyCallbackInfo::SendResponse
bool SendResponse(SIP_PDU::StatusCodes status, const char *extra=NULL)
SIPMIMEInfo::GetContentEncoding
PCaselessString GetContentEncoding() const
SIPOptions::Params::m_body
PString m_body
Definition: sippdu.h:1367
SIPPrack::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIP_PDU::Failure_NotFound
Definition: sippdu.h:543
SIP_PDU::Failure_RequestPending
Definition: sippdu.h:568
SIP_PDU::Failure_IntervalTooBrief
Definition: sippdu.h:557
SIPSubscribe::NotifyCallbackInfo::m_response
SIP_PDU & m_response
Definition: sippdu.h:1165
SIPSubscribe::NotifyCallbackInfo::m_endpoint
SIPEndPoint & m_endpoint
Definition: sippdu.h:1162
SIP_PDU::Local_BadTransportAddress
Definition: sippdu.h:521
SIPInvite::m_rtpSessions
OpalRTPSessionManager m_rtpSessions
Definition: sippdu.h:990
SIPNotify::SIPNotify
SIPNotify(SIPEndPoint &ep, OpalTransport &trans, SIPDialogContext &dialog, const SIPEventPackage &eventPackage, const PString &state, const PString &body)
SIPDialogContext::SetRouteSet
void SetRouteSet(const PString &str)
Definition: sippdu.h:764
SIPDialogContext::m_lastSentCSeq
unsigned m_lastSentCSeq
Definition: sippdu.h:796
SIPMIMEInfo::SetReferredBy
void SetReferredBy(const PString &r)
SIPPublish
Definition: sippdu.h:1254
SIPEventPackage
SIPSubscribe::EventPackage SIPEventPackage
Definition: sippdu.h:1212
SIPOptions::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPRegister::CompatibilityModes
CompatibilityModes
Definition: sippdu.h:1040
SIPMIMEInfo::SetAlertInfo
void SetAlertInfo(const PString &info, int appearance)
SIPMIMEInfo::SetVia
void SetVia(const PString &v)
SIPMIMEInfo::GetUserAgent
PString GetUserAgent() const
SIP_PDU::GetMIME
const SIPMIMEInfo & GetMIME() const
Definition: sippdu.h:700
SIPNotify::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPSubscribe::EventPackage::IsWatcher
bool IsWatcher() const
SIPParameters::m_minRetryTime
PTimeInterval m_minRetryTime
Definition: sippdu.h:830
SIPMIMEInfo::SetSIPETag
void SetSIPETag(const PString &v)
SIPTransaction::m_state
States m_state
Definition: sippdu.h:929
SIPMIMEInfo::GetSubject
PString GetSubject() const
SIP_PDU::Build
PString Build()
SIP_PDU::Method_PING
Definition: sippdu.h:512
SIPAuthenticator::GetURI
virtual PString GetURI()
SIPURL::operator=
SIPURL & operator=(const PString &str)
Definition: sippdu.h:99
SIPSubscribe::EventPackage::operator==
bool operator==(const char *cstr) const
Definition: sippdu.h:1132
SIP_PDU::Failure_TooManyHops
Definition: sippdu.h:561
SIPMIMEInfo::SetCSeq
void SetCSeq(const PString &v)
SIPMessage::Params::m_contentType
PCaselessString m_contentType
Definition: sippdu.h:1322
SIPTransaction::OnCompleted
virtual PBoolean OnCompleted(SIP_PDU &response)
SIPOptions::Params::Params
Params()
Definition: sippdu.h:1360
SIPDialogContext::m_lastReceivedCSeq
unsigned m_lastReceivedCSeq
Definition: sippdu.h:797
SIP_PDU::SetRoute
bool SetRoute(const SIPURLList &routeSet)
SIP_PDU::NumMethods
Definition: sippdu.h:515
SIPMIMEInfo::SetAcceptLanguage
void SetAcceptLanguage(const PString &v)
SIPMIMEInfo::SetOrganization
void SetOrganization(const PString &v)
SIPTransaction::~SIPTransaction
~SIPTransaction()
SIP_PDU::SetURI
void SetURI(const SIPURL &newuri)
Definition: sippdu.h:691
SIPMIMEInfo::InternalAddMIME
virtual bool InternalAddMIME(const PString &fieldName, const PString &fieldValue)
SIPMIMEInfo::GetFirstVia
PString GetFirstVia() const
SIP_PDU::Failure_Conflict
Definition: sippdu.h:548
SIPMIMEInfo::GetAlertInfo
void GetAlertInfo(PString &info, int &appearance)
SIPRegister::Params::m_compatibility
CompatibilityModes m_compatibility
Definition: sippdu.h:1072
SIPParameters::m_localAddress
PCaselessString m_localAddress
Definition: sippdu.h:819
OpalMediaFormatList
Definition: mediafmt.h:72
SIPInvite
Definition: sippdu.h:973
SIPRegister::e_FullyCompliant
Definition: sippdu.h:1041
SIPMIMEInfo::SIPMIMEInfo
SIPMIMEInfo(bool compactForm=false)
SIPTransaction::IsFailed
bool IsFailed() const
Definition: sippdu.h:880
SIPAuthenticator::GetMIME
virtual PMIMEInfo & GetMIME()
SIP_PDU::Failure_RequestURITooLong
Definition: sippdu.h:552
SIP_PDU::Redirection_MultipleChoices
Definition: sippdu.h:533
SIP_PDU::SIP_PDU
SIP_PDU(Methods method=SIP_PDU::NumMethods)
SIPURL::ContactURI
General Contact header field.
Definition: sippdu.h:176
SIPMIMEInfo::SetPPreferredIdentity
void SetPPreferredIdentity(const PString &v)
SIPTransaction::IsProceeding
bool IsProceeding() const
Definition: sippdu.h:878
SIPInvite::GetSessionManager
const OpalRTPSessionManager & GetSessionManager() const
Definition: sippdu.h:986
SIPMIMEInfo::SetSubject
void SetSubject(const PString &v)
SIPMessage::GetLocalAddress
const SIPURL & GetLocalAddress() const
Definition: sippdu.h:1340
SIPPublish::SIPPublish
SIPPublish(SIPEndPoint &ep, OpalTransport &trans, const PString &id, const PString &sipIfMatch, const SIPSubscribe::Params &params, const PString &body)
SIPURLList::ToString
PString ToString() const
SIPMIMEInfo::SetContact
void SetContact(const PString &v)
SIPMIMEInfo::SetSubscriptionState
void SetSubscriptionState(const PString &v)
SIPAuthenticator
Definition: sippdu.h:473
SIPSubscribe::PresenceWatcher
Definition: sippdu.h:1111
SIP_PDU::Redirection_MovedPermanently
Definition: sippdu.h:534
SIP_PDU::Failure_BusyHere
Definition: sippdu.h:564
SIPRegister::e_CannotRegisterPrivateContacts
Definition: sippdu.h:1048
SIPOptions
Definition: sippdu.h:1353
SIPURL::RedirectURI
Redirect Contact header field.
Definition: sippdu.h:175
SIPMIMEInfo::SetViaList
void SetViaList(const PStringList &v)
SIPOptions::Params
Definition: sippdu.h:1358
SIPMIMEInfo::AddUnsupported
void AddUnsupported(const PString &v)
SIPTransaction::OnReceivedResponse
virtual PBoolean OnReceivedResponse(SIP_PDU &response)
SIPParameters::m_authID
PString m_authID
Definition: sippdu.h:825
SIP_PDU::Failure_UnAuthorised
Definition: sippdu.h:540
SIPTransaction::GenerateCallID
static PString GenerateCallID()
SIP_PDU::Method_PRACK
Definition: sippdu.h:514
SIP_PDU::m_versionMinor
unsigned m_versionMinor
Definition: sippdu.h:710
SIPDialogContext::GetRemoteTag
const PString & GetRemoteTag() const
Definition: sippdu.h:757
SIPResponse::SIPResponse
SIPResponse(SIPEndPoint &endpoint, StatusCodes code)
SIPMessage::Params::m_messageId
PAtomicInteger::IntegerType m_messageId
Definition: sippdu.h:1325
SIP_PDU::Failure_TransactionDoesNotExist
Definition: sippdu.h:559
SIPMessage::Params::Params
Params()
Definition: sippdu.h:1316
SIPTransaction::m_retry
unsigned m_retry
Definition: sippdu.h:930
SIPPrack::SIPPrack
SIPPrack(SIPConnection &conn, const PString &rack)
SIPOptions::Params::m_acceptContent
PCaselessString m_acceptContent
Definition: sippdu.h:1365
SIPMIMEInfo::SetReferTo
void SetReferTo(const PString &r)
SIP_PDU::Method_PUBLISH
Definition: sippdu.h:513
SIP_PDU::Failure_BadExtension
Definition: sippdu.h:555
SIPHandler
Definition: handlers.h:54
SIPSubscribe::NumPredefinedPackages
Definition: sippdu.h:1106
SIPDialogContext::m_remoteURI
SIPURL m_remoteURI
Definition: sippdu.h:793
SIPMIMEInfo::GetSubscriptionState
PCaselessString GetSubscriptionState(PStringToString &info) const
SIPTransaction::Completed
Definition: sippdu.h:912
SIP_PDU::Failure_Undecipherable
Definition: sippdu.h:569
SIPPing
Definition: sippdu.h:1423
SIPReferNotify::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIP_PDU::Failure_BadRequest
Definition: sippdu.h:539
SIPURL::GenerateTag
static PString GenerateTag()
Generate a unique string suitable as a dialog tag.
SIPSubscribe::Params::m_contentType
PCaselessString m_contentType
Definition: sippdu.h:1190
SIPParameters
Definition: sippdu.h:806
SIPSubscribe::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SDPSessionDescription
Definition: sdp.h:300
SIPTransaction::m_retryTimeoutMax
PTimeInterval m_retryTimeoutMax
Definition: sippdu.h:927
SIPDialogContext::IncrementCSeq
void IncrementCSeq(unsigned inc)
Definition: sippdu.h:772
SIP_PDU::Failure_MessageTooLarge
Definition: sippdu.h:577
SIP_PDU::Failure_TemporarilyUnavailable
Definition: sippdu.h:558
SIPSubscribe::SubscriptionStatus::m_reSubscribing
bool m_reSubscribing
Was a registration refresh.
Definition: sippdu.h:1143
SIPSubscribe::EventPackage::operator==
bool operator==(const PString &str) const
Definition: sippdu.h:1131
SIPTransaction::SetParameters
void SetParameters(const SIPParameters &params)
SIPDialogContext::m_localTag
PString m_localTag
Definition: sippdu.h:792
SIP_PDU::Failure_Gone
Definition: sippdu.h:549
SIPMIMEInfo::GetCSeq
PString GetCSeq() const
SIPDialogContext::m_externalTransportAddress
OpalTransportAddress m_externalTransportAddress
Definition: sippdu.h:798
SIPDialogContext::SetRemoteURI
void SetRemoteURI(const SIPURL &url)
SIP_PDU::Redirection_MovedTemporarily
Definition: sippdu.h:535
SIPMIMEInfo::SetMinExpires
void SetMinExpires(PINDEX v)
SIP_PDU::GetMethod
Methods GetMethod() const
Definition: sippdu.h:687
SIPEventPackageHandler::GetContentType
virtual PCaselessString GetContentType() const =0
SIPSubscribe::EventPackage::EventPackage
EventPackage(const char *str)
Definition: sippdu.h:1124
SIPSubscribe::EventPackage::operator=
EventPackage & operator=(const char *str)
Definition: sippdu.h:1128
SIP_PDU::Failure_Forbidden
Definition: sippdu.h:542
SIPInfo::SIPInfo
SIPInfo(SIPConnection &conn, const Params &params)
SIP_PDU::Method_NOTIFY
Definition: sippdu.h:508
SIPMIMEInfo::GetAllow
PString GetAllow() const
SIP_PDU::Failure_ExtensionRequired
Definition: sippdu.h:556
SIPDialogContext::GetRemoteURI
const SIPURL & GetRemoteURI() const
Definition: sippdu.h:760
SIP_PDU::PrintOn
void PrintOn(ostream &strm) const
SIPTransaction::Trying
Definition: sippdu.h:909
SIPMIMEInfo::GetRoute
PString GetRoute() const
SIP_PDU::Failure_RequestTerminated
Definition: sippdu.h:565
SIPSubscribe::SubscriptionStatus
Definition: sippdu.h:1139
SIPMIMEInfo::GetAllowBitMask
unsigned GetAllowBitMask() const
SIPSubscribe::MessageSummary
Definition: sippdu.h:1102
SIPRegister
Definition: sippdu.h:1036
SIPDialogContext
Definition: sippdu.h:734
SIPAuthentication
PHTTPClientAuthentication SIPAuthentication
Definition: sippdu.h:471
SIPSubscribe::operator|
friend PredefinedPackages operator|(PredefinedPackages p1, PredefinedPackages p2)
Definition: sippdu.h:1116
SIPMIMEInfo::GetMaxForwards
PINDEX GetMaxForwards() const
SIP_PDU::Information_CallForwarded
Definition: sippdu.h:526
SIP_PDU::GetTransactionID
PString GetTransactionID() const
SIPSubscribe::Params::Params
Params(const Params &param)
Definition: sippdu.h:1177
SIP_PDU::Write
PBoolean Write(OpalTransport &transport, const OpalTransportAddress &remoteAddress=OpalTransportAddress(), const PString &localInterface=PString::Empty())
SIPEventPackageHandler
Definition: sippdu.h:1219
SIPParameters::m_userData
void * m_userData
Definition: sippdu.h:832
SIPTransaction::Terminated_Aborted
Definition: sippdu.h:918
SIPURL::ToURI
To header field.
Definition: sippdu.h:172
SIPURL::UsageContext
UsageContext
Definition: sippdu.h:169
SIPURL::RegisterURI
URI on REGISTER request line.
Definition: sippdu.h:178
SIPURL::RequestURI
Request-URI (after the INVITE)
Definition: sippdu.h:171
SIPEventPackageHandler::~SIPEventPackageHandler
virtual ~SIPEventPackageHandler()
Definition: sippdu.h:1222
SIPTransaction::m_remoteAddress
OpalTransportAddress m_remoteAddress
Definition: sippdu.h:936
SIPMIMEInfo::GetFrom
SIPURL GetFrom() const
SIPDialogContext::m_callId
PString m_callId
Definition: sippdu.h:789
SIPMIMEInfo::GetCSeqIndex
unsigned GetCSeqIndex() const
Definition: sippdu.h:376
SIPParameters::m_addressOfRecord
PCaselessString m_addressOfRecord
Definition: sippdu.h:821
SIPTransaction::SetInterface
void SetInterface(const PString &localIf)
Definition: sippdu.h:895
SIPDialogContext::AsString
PString AsString() const
SIPTransaction::SetTerminated
virtual void SetTerminated(States newState)
SIPMIMEInfo::SetRecordRoute
void SetRecordRoute(const PString &v)
SIPURL::SetDisplayName
void SetDisplayName(const PString &str)
Definition: sippdu.h:152
SIPMIMEInfo::GetContacts
bool GetContacts(SIPURLList &contacts) const
SIPSubscribe::SIPSubscribe
SIPSubscribe(SIPEndPoint &ep, OpalTransport &trans, SIPDialogContext &dialog, const Params &params)
SIPMIMEInfo::SetUnsupported
void SetUnsupported(const PStringSet &v)
operator<<
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
SIPDialogContext::SetLocalURI
void SetLocalURI(const SIPURL &url)
SIPTransaction::Terminated_Success
Definition: sippdu.h:913
SIPNotify
Definition: sippdu.h:1235
SIP_PDU::Local_TransportError
Definition: sippdu.h:520
SIPEventPackageHandler::OnSendNOTIFY
virtual PString OnSendNOTIFY(SIPHandler &, const PObject *)
Definition: sippdu.h:1226
SIP_PDU::GetStatusCode
StatusCodes GetStatusCode() const
Definition: sippdu.h:688
SIPMIMEInfo::SetCallID
void SetCallID(const PString &v)
SIP_PDU::Failure_ProxyAuthenticationRequired
Definition: sippdu.h:546
SIPDialogContext::Update
void Update(OpalTransport &transport, const SIP_PDU &response)
SIPAck::SIPAck
SIPAck(SIPTransaction &invite, SIP_PDU &response)
SIP_PDU::GetStatusCodeDescription
static const char * GetStatusCodeDescription(int code)
SIPAck::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIP_PDU::Failure_AddressIncomplete
Definition: sippdu.h:562
SIPTransaction::Proceeding
Definition: sippdu.h:910
SIPURL::SIPURL
SIPURL(const PURL &url)
Definition: sippdu.h:76
SIPMessage::Params::m_id
PString m_id
Definition: sippdu.h:1323
SIPMIMEInfo::GetContentLength
PINDEX GetContentLength() const
SIP_PDU::Failure_LengthRequired
Definition: sippdu.h:550
SIPDialogContext::IsEstablished
bool IsEstablished() const
Definition: sippdu.h:776
SIPTransaction::m_localInterface
PString m_localInterface
Definition: sippdu.h:935
SIPMIMEInfo::GetContact
SIPURL GetContact() const
SIPSubscribe::EventPackage::InternalCompare
virtual Comparison InternalCompare(PINDEX offset, PINDEX length, const char *cstr) const
SIPSubscribe::Params::m_onNotify
PNotifierTemplate< NotifyCallbackInfo & > m_onNotify
Definition: sippdu.h:1193
SIPDialogContext::GetRequestURI
const SIPURL & GetRequestURI() const
Definition: sippdu.h:748
SIPDialogContext::m_requestURI
SIPURL m_requestURI
Definition: sippdu.h:790
SIP_PDU::Failure_MethodNotAllowed
Definition: sippdu.h:544
SIPTransaction::IsCanceled
bool IsCanceled() const
Definition: sippdu.h:882
SIP_PDU::Redirection_UseProxy
Definition: sippdu.h:536
SIPResponse::Send
bool Send(OpalTransport &transport, const SIP_PDU &command)
SIP_PDU::Failure_BadEvent
Definition: sippdu.h:567
SIPDialogContext::SIPDialogContext
SIPDialogContext()
SIPURL::Sanitise
void Sanitise(UsageContext context)
SIPTransaction::Terminated_Cancelled
Definition: sippdu.h:917
SIPMIMEInfo::SetAllowEvents
void SetAllowEvents(const PString &v)
SIPTransaction::Cancelling
Definition: sippdu.h:911
SIPInfo::Params::Params
Params(const PString &contentType=PString::Empty(), const PString &body=PString::Empty())
Definition: sippdu.h:1399
SIP_PDU::Information_Trying
Definition: sippdu.h:524
SIPMIMEInfo::SetPAssertedIdentity
void SetPAssertedIdentity(const PString &v)
SIP_PDU::GetVersionMajor
unsigned GetVersionMajor() const
Definition: sippdu.h:692
SIP_PDU::GetURI
const SIPURL & GetURI() const
Definition: sippdu.h:690
SIPMIMEInfo::GetProductInfo
void GetProductInfo(OpalProductInfo &info) const
SIPURL::ExternalURI
URI used anywhere outside of protocol.
Definition: sippdu.h:170
SIPInvite::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPSubscribeHandler
Definition: handlers.h:222
SIPMIMEInfo::GetViaReceivedAddress
OpalTransportAddress GetViaReceivedAddress() const
SIPURL::GetHostAddress
OpalTransportAddress GetHostAddress() const
SIPParameters::m_mime
SIPMIMEInfo m_mime
Definition: sippdu.h:824
SIPRegister::Params
Registrar parameters.
Definition: sippdu.h:1059
SIPMIMEInfo::GetPAssertedIdentity
SIPURL GetPAssertedIdentity() const
SIP_PDU::Failure_UnsupportedMediaType
Definition: sippdu.h:553
SIPParameters::m_proxyAddress
PCaselessString m_proxyAddress
Definition: sippdu.h:820
SIPTransaction::m_transport
OpalTransport & m_transport
Definition: sippdu.h:924
SIPTransaction::Start
PBoolean Start()
SIP_PDU::SetEntityBody
void SetEntityBody()
SIP_PDU::SetInfo
void SetInfo(const PString &info)
Definition: sippdu.h:699
SIPDialogContext::SetCallID
void SetCallID(const PString &id)
Definition: sippdu.h:746
SIPRegister::Params::Params
Params(const Params &param)
Definition: sippdu.h:1065
SIPRegister::Params::Params
Params()
Definition: sippdu.h:1060
SIPTransaction::NumStates
Definition: sippdu.h:919
SIPMIMEInfo::SetSupported
void SetSupported(const PStringSet &v)
SIPMessage::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIPSubscribe::NotifyCallbackInfo::m_sendResponse
bool m_sendResponse
Definition: sippdu.h:1166
SIPMIMEInfo::SetRoute
void SetRoute(const PString &v)
SIPSubscribe::Params::m_eventList
bool m_eventList
Definition: sippdu.h:1189
SIPSubscribe::NotifyCallbackInfo::m_notify
SIP_PDU & m_notify
Definition: sippdu.h:1164
SIPTransaction::Terminated_Timeout
Definition: sippdu.h:914
SIPPing::SIPPing
SIPPing(SIPEndPoint &ep, OpalTransport &trans, const SIPURL &address)
SIPMIMEInfo::GetReferredBy
SIPURL GetReferredBy() const
SIPInfo
Definition: sippdu.h:1392
SIPURLList
Definition: sippdu.h:228
SIPSubscribe::DialogWatcher
Definition: sippdu.h:1112
SIPOptions::Construct
void Construct(const Params &params)
SIP_PDU::Information_Session_Progress
Definition: sippdu.h:528
SIPMIMEInfo::GetSupported
PStringSet GetSupported() const
SIP_PDU::MaxStatusCode
Definition: sippdu.h:584
SIPTransaction::Abort
void Abort()
SIPMIMEInfo::GetSIPIfMatch
PString GetSIPIfMatch() const
SIPTransaction::IsCompleted
bool IsCompleted() const
Definition: sippdu.h:881
SIPMIMEInfo::GetTo
SIPURL GetTo() const
SIP_PDU::Failure_NotAcceptable
Definition: sippdu.h:545
SIP_PDU::SetAllow
void SetAllow(unsigned bitmask)
SIPDialogContext::SetForking
void SetForking(bool f)
Definition: sippdu.h:786
SIPMIMEInfo::SetTo
void SetTo(const PString &v)
SIPDialogContext::GetLocalURI
const SIPURL & GetLocalURI() const
Definition: sippdu.h:754
SIPMIMEInfo::GetRequire
PStringSet GetRequire() const
SIPMIMEInfo::SetAccept
void SetAccept(const PString &v)
SIP_PDU::Information_Queued
Definition: sippdu.h:527
SIP_PDU::Methods
Methods
Definition: sippdu.h:500
SIP_PDU::SetCSeq
void SetCSeq(unsigned cseq)
SIP_PDU::m_versionMajor
unsigned m_versionMajor
Definition: sippdu.h:709
SIP_PDU::Redirection_AlternativeService
Definition: sippdu.h:537
SIPDialogContext::GetRouteSet
const SIPURLList & GetRouteSet() const
Definition: sippdu.h:763
SIPSubscribe::NotifyCallbackInfo::m_transport
OpalTransport & m_transport
Definition: sippdu.h:1163
SIPMIMEInfo::SetFieldParameter
void SetFieldParameter(const PString &fieldName, const PString &paramName, const PString &newValue)
Definition: sippdu.h:434
SIP_PDU::operator<<
friend ostream & operator<<(ostream &strm, StatusCodes status)
SIPRefer
Definition: sippdu.h:1273
SIPURL::GetFieldParameters
const PStringOptions & GetFieldParameters() const
Return string options in field parameters.
Definition: sippdu.h:158
SIPMIMEInfo::SetTokenSet
void SetTokenSet(const char *field, const PStringSet &tokens)
SIP_PDU::m_transactionID
PString m_transactionID
Definition: sippdu.h:717
SIPURL::SetHostAddress
void SetHostAddress(const OpalTransportAddress &addr)
SIPTransaction::Cancel
PBoolean Cancel()
SIPMessage::SIPMessage
SIPMessage(SIPEndPoint &ep, OpalTransport &trans, const Params &params)
SIPDialogContext::FromString
bool FromString(const PString &str)
SIPTransaction::IsTerminated
bool IsTerminated() const
Definition: sippdu.h:883
SIPSubscribe::Params::Params
Params(PredefinedPackages pkg=NumPredefinedPackages)
Definition: sippdu.h:1171
SIP_PDU::SetStatusCode
void SetStatusCode(StatusCodes c)
Definition: sippdu.h:689
SIPURL::operator=
SIPURL & operator=(const char *cstr)
Definition: sippdu.h:89
SIPEventPackageFactory
PFactory< SIPEventPackageHandler, SIPEventPackage > SIPEventPackageFactory
Definition: sippdu.h:1230
SIP_PDU::m_mime
SIPMIMEInfo m_mime
Definition: sippdu.h:712
SIP_PDU::Failure_BadGateway
Definition: sippdu.h:573
SIPMIMEInfo::SetEvent
void SetEvent(const PString &v)
SIPTransaction::m_completed
PSyncPoint m_completed
Definition: sippdu.h:933
SIPRefer::SIPRefer
SIPRefer(SIPConnection &connection, const SIPURL &referTo, const SIPURL &referred_by, bool referSub)
SIPSubscribe::EventPackage::operator=
EventPackage & operator=(PredefinedPackages pkg)
SIP_PDU::Method_OPTIONS
Definition: sippdu.h:503
SIPSubscribe::SubscriptionStatus::m_handler
SIPSubscribeHandler * m_handler
Handler for subscription.
Definition: sippdu.h:1140
sdp.h
SIPTransaction::GetInterface
PString GetInterface() const
Definition: sippdu.h:894
SIPDialogContext::GetCallID
const PString & GetCallID() const
Definition: sippdu.h:745
SIPURL::GetDisplayName
PString GetDisplayName(PBoolean useDefault=true) const
SIPTransaction::States
States
Definition: sippdu.h:907
SIPSubscribe::NotifyCallbackInfo
Definition: sippdu.h:1149
OpalTransportAddress
Definition: transports.h:149
SIP_PDU::m_info
PString m_info
Definition: sippdu.h:711
SIPDialogContext::GetRemoteTransportAddress
OpalTransportAddress GetRemoteTransportAddress() const
SIPSubscribe::Params::m_eventPackage
EventPackage m_eventPackage
Definition: sippdu.h:1188
SIPDialogContext::SetRequestURI
void SetRequestURI(const SIPURL &url)
Definition: sippdu.h:749
SIPMIMEInfo::compactForm
bool compactForm
Encode using compact form.
Definition: sippdu.h:464
rtpconn.h
SIPDialogContext::IsDuplicateCSeq
bool IsDuplicateCSeq(unsigned sequenceNumber)
SIP_PDU::Information_Ringing
Definition: sippdu.h:525
SIPMIMEInfo::GetExpires
unsigned GetExpires(unsigned dflt=UINT_MAX) const
SIPParameters::SIPParameters
SIPParameters(const PString &aor=PString::Empty(), const PString &remote=PString::Empty())
SIPPublish::CreateDuplicate
virtual SIPTransaction * CreateDuplicate() const
SIP_PDU::InitialiseHeaders
void InitialiseHeaders(const SIPURL &dest, const SIPURL &to, const SIPURL &from, const PString &callID, unsigned cseq, const PString &via)
SIPMIMEInfo::GetContentType
PCaselessString GetContentType(bool includeParameters=false) const
SIP_PDU::IllegalStatusCode
Definition: sippdu.h:519
SIPDialogContext::SetRemoteTag
void SetRemoteTag(const PString &tag)
Definition: sippdu.h:758
SIPMIMEInfo::AddTokenSet
void AddTokenSet(const char *field, const PString &token)
SIPTransaction::WaitForCompletion
void WaitForCompletion()
SIPURLList::FromString
bool FromString(const PString &str, SIPURL::UsageContext context=SIPURL::RouteURI, bool reversed=false)
SIPInvite::SIPInvite
SIPInvite(SIPConnection &connection, const OpalRTPSessionManager &sm)
SIPEventPackageHandler::OnReceivedNOTIFY
virtual bool OnReceivedNOTIFY(SIPHandler &handler, SIP_PDU &request)=0
SIPParameters::m_expire
unsigned m_expire
Definition: sippdu.h:828
SIPParameters::Normalise
void Normalise(const PString &defaultUser, const PTimeInterval &defaultExpire)
SIPURL::FromURI
From header field.
Definition: sippdu.h:173
SIPMIMEInfo::GetMinExpires
PINDEX GetMinExpires() const
SIP_PDU::m_entityBody
PString m_entityBody
Definition: sippdu.h:713
SIP_PDU::Failure_SIPVersionNotSupported
Definition: sippdu.h:576
SIPInfo::Params
Definition: sippdu.h:1397
SIPMIMEInfo::GetTokenSet
PStringSet GetTokenSet(const char *field) const
SIPMIMEInfo::GetEvent
PString GetEvent() const
SIP_PDU::Failure_ServerTimeout
Definition: sippdu.h:575
SIP_PDU::~SIP_PDU
~SIP_PDU()
SIPTransaction::GetConnection
SIPConnection * GetConnection() const
Definition: sippdu.h:893
SIPURL::m_fieldParameters
PStringOptions m_fieldParameters
Definition: sippdu.h:224
SIPTransaction::SendPDU
bool SendPDU(SIP_PDU &pdu)
SIPParameters::m_password
PString m_password
Definition: sippdu.h:826
SIPInfo::Params::m_body
PString m_body
Definition: sippdu.h:1407
SIPTransaction::NotStarted
Definition: sippdu.h:908
SIP_PDU::Method_REGISTER
Definition: sippdu.h:506
SIPURL::RouteURI
Record-Route header field.
Definition: sippdu.h:174
SIPMIMEInfo::IsContentLengthPresent
PBoolean IsContentLengthPresent() const
SIPSubscribe::EventPackage::EventPackage
EventPackage(const PString &str)
Definition: sippdu.h:1123
OpalProductInfo
Definition: connection.h:312
SIP_PDU::CreateVia
PString CreateVia(SIPEndPoint &endpoint, const OpalTransport &transport)
SIPMIMEInfo::GetCallInfo
PString GetCallInfo() const
SIPTransaction::m_connection
PSafePtr< SIPConnection > m_connection
Definition: sippdu.h:925
SIP_PDU::Method_ACK
Definition: sippdu.h:502
SIP_PDU::Failure_ServiceUnavailable
Definition: sippdu.h:574
SIP_PDU::SetSDP
void SetSDP(SDPSessionDescription *sdp)
SIPDialogContext::GetNextCSeq
unsigned GetNextCSeq()
SIPSubscribe::SubscriptionStatus::m_wasSubscribing
bool m_wasSubscribing
Was registering or unregistering.
Definition: sippdu.h:1142
SIP_PDU::Method_BYE
Definition: sippdu.h:504
SIPMIMEInfo::GetDate
PString GetDate() const