SIPEndPoint Class Reference

`#include <sipep.h>`

Inheritance diagram for SIPEndPoint:

## Data Structures

struct | ConnectionlessMessageInfo
class | InterfaceMonitor
struct | RegistrationCompletion
struct | RegistrationStatus
class | SIP_Work
class | WorkThreadPool

## Public Types

enum | NATBindingRefreshMethod { None, Options, EmptyRequest, NumMethods }
typedef SIPSubscribe::SubscriptionStatus | SubscriptionStatus
typedef PNotifierTemplate< ConnectionlessMessageInfo & > | ConnectionlessMessageNotifier
Public Types inherited from OpalEndPoint
enum | Attributes { CanTerminateCall = 1, SupportsE164 = 2 }

## Public Member Functions

PSafePtr< SIPConnection > | GetSIPConnectionWithLock (const PString &token, PSafetyMode mode=PSafeReadWrite, SIP_PDU::StatusCodes *errorCode=NULL)
virtual PBoolean | IsAcceptedAddress (const SIPURL &toAddr)
bool | Register (const SIPRegister::Params &params, PString &aor, SIP_PDU::StatusCodes *reason=NULL)
bool | Register (const SIPRegister::Params &params, PString &aor, bool asynchronous)
bool P_DEPRECATED | Register (const PString &host, const PString &user=PString::Empty(), const PString &autName=PString::Empty(), const PString &password=PString::Empty(), const PString &authRealm=PString::Empty(), unsigned expire=0, const PTimeInterval &minRetryTime=PMaxTimeInterval, const PTimeInterval &maxRetryTime=PMaxTimeInterval)
| Registration function for backward compatibility. More...
PBoolean | IsRegistered (const PString &aor, bool includeOffline=false)
bool | Unregister (const PString &aor)
bool | UnregisterAll ()
unsigned | GetRegistrationsCount () const
PStringList | GetRegistrations (bool includeOffline=false) const
virtual void | OnRegistrationStatus (const RegistrationStatus &status)
virtual void | OnRegistrationStatus (const PString &aor, PBoolean wasRegistering, PBoolean reRegistering, SIP_PDU::StatusCodes reason)
virtual void | OnRegistrationFailed (const PString &aor, SIP_PDU::StatusCodes reason, PBoolean wasRegistering)
virtual void | OnRegistered (const PString &aor, PBoolean wasRegistering)
bool | Subscribe (const SIPSubscribe::Params &params, PString &token, bool tokenIsAOR=true)
bool | Subscribe (SIPSubscribe::PredefinedPackages eventPackage, unsigned expire, const PString &aor)
bool | IsSubscribed (const PString &aor, bool includeOffline=false)
bool | IsSubscribed (const PString &eventPackage, const PString &aor, bool includeOffline=false)
bool | Unsubscribe (const PString &aor, bool invalidateNotifiers=false)
bool | Unsubscribe (SIPSubscribe::PredefinedPackages eventPackage, const PString &aor, bool invalidateNotifiers=false)
bool | Unsubscribe (const PString &eventPackage, const PString &aor, bool invalidateNotifiers=false)
bool | UnsubcribeAll (SIPSubscribe::PredefinedPackages eventPackage)
bool | UnsubcribeAll (const PString &eventPackage)
unsigned | GetSubscriptionCount (const SIPSubscribe::EventPackage &eventPackage)
PStringList | GetSubscriptions (const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
virtual void | OnSubscriptionStatus (const SubscriptionStatus &status)
virtual void | OnSubscriptionStatus (const PString &eventPackage, const SIPURL &uri, bool wasSubscribing, bool reSubscribing, SIP_PDU::StatusCodes reason)
virtual void | OnSubscriptionStatus (SIPSubscribeHandler &handler, const SIPURL &uri, bool wasSubscribing, bool reSubscribing, SIP_PDU::StatusCodes reason)
virtual bool | CanNotify (const PString &eventPackage)
bool | Notify (const SIPURL &targetAddress, const PString &eventPackage, const PObject &body)
virtual void | OnDialogInfoReceived (const SIPDialogNotification &info)
void | SendNotifyDialogInfo (const SIPDialogNotification &info)
virtual PBoolean | Message (OpalIM &message)
bool | SendMESSAGE (SIPMessage::Params &params)
virtual void | OnMESSAGECompleted (const SIPMessage::Params &params, SIP_PDU::StatusCodes reason)
void | SetConnectionlessMessageNotifier (const ConnectionlessMessageNotifier &notifier)
virtual bool | SendOPTIONS (const SIPOptions::Params &params)
virtual void | OnOptionsCompleted (const SIPOptions::Params &params, const SIP_PDU &response)
bool | Publish (const SIPSubscribe::Params &params, const PString &body, PString &aor)
bool | Publish (const PString &to, const PString &body, unsigned expire=300)
PStringList | GetPublications (const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
bool | PublishPresence (const SIPPresenceInfo &info, unsigned expire=300)
virtual void | OnPresenceInfoReceived (const SIPPresenceInfo &info)
virtual void | OnPresenceInfoReceived (const PString &identity, const PString &basic, const PString &note)
PBoolean | Ping (const PURL &to)
SIPConnection::PRACKMode | GetDefaultPRACKMode () const
void | SetDefaultPRACKMode (SIPConnection::PRACKMode mode)
void | SetMIMEForm (PBoolean v)
PBoolean | GetMIMEForm () const
void | SetMaxRetries (unsigned r)
unsigned | GetMaxRetries () const
void | SetRetryTimeouts (const PTimeInterval &t1, const PTimeInterval &t2)
const PTimeInterval & | GetRetryTimeoutMin () const
const PTimeInterval & | GetRetryTimeoutMax () const
void | SetNonInviteTimeout (const PTimeInterval &t)
const PTimeInterval & | GetNonInviteTimeout () const
void | SetPduCleanUpTimeout (const PTimeInterval &t)
const PTimeInterval & | GetPduCleanUpTimeout () const
void | SetInviteTimeout (const PTimeInterval &t)
const PTimeInterval & | GetInviteTimeout () const
void | SetProgressTimeout (const PTimeInterval &t)
const PTimeInterval & | GetProgressTimeout () const
void | SetAckTimeout (const PTimeInterval &t)
const PTimeInterval & | GetAckTimeout () const
void | SetRegistrarTimeToLive (const PTimeInterval &t)
const PTimeInterval & | GetRegistrarTimeToLive () const
void | SetNotifierTimeToLive (const PTimeInterval &t)
const PTimeInterval & | GetNotifierTimeToLive () const
void | SetNATBindingTimeout (const PTimeInterval &t)
const PTimeInterval & | GetNATBindingTimeout () const
void | AddTransaction (SIPTransaction *transaction)
PSafePtr< SIPTransaction > | GetTransaction (const PString &transactionID, PSafetyMode mode=PSafeReadWrite)
unsigned | GetNextCSeq ()
void | SetRegisteredUserMode (bool v)
bool | GetRegisteredYserMode () const
SIP_PDU::StatusCodes | HandleAuthentication (SIPAuthentication *&authentication, unsigned &authenticateErrors, const SIP_PDU &response, const SIPURL &proxyOverride, const PString &username, const PString &password)
virtual SIPURL | GetRegisteredProxy (const SIPURL &remoteURL)
virtual SIPURL | GetRegisteredPartyName (const SIPURL &remoteURL, const OpalTransport &transport)
virtual SIPURL | GetDefaultRegisteredPartyName (const OpalTransport &transport)
void | AdjustToRegistration (SIP_PDU &pdu, const OpalTransport &transport, const SIPConnection *connection)
virtual SIPURL | GetLocalURL (const OpalTransport &transport, const PString &userName=PString::Empty())
const SIPURL & | GetProxy () const
void | SetProxy (const SIPURL &url)
void | SetProxy (const PString &hostname, const PString &username, const PString &password)
int | GetDefaultAppearanceCode () const
void | SetDefaultAppearanceCode (int code)
virtual PString | GetUserAgent () const
void | SetUserAgent (const PString &str)
virtual unsigned | GetAllowedMethods () const
void | SetNATBindingRefreshMethod (const NATBindingRefreshMethod m)
virtual SIPRegisterHandler * | CreateRegisterHandler (const SIPRegister::Params &params)
virtual void | OnStartTransaction (SIPConnection &conn, SIPTransaction &transaction)
void | UpdateHandlerIndexes (SIPHandler *handler)
Construction
| SIPEndPoint (OpalManager &manager, unsigned maxConnectionThreads=10, unsigned maxHandlerThreads=5)
| ~SIPEndPoint ()
Overrides from OpalEndPoint
virtual void | ShutDown ()
virtual PString | GetDefaultTransport () const
virtual PBoolean | NewIncomingConnection (OpalTransport *transport)
virtual PSafePtr< OpalConnection > | MakeConnection (OpalCall &call, const PString &party, void *userData, unsigned int options, OpalConnection::StringOptions *stringOptions)
virtual void | OnReleased (OpalConnection &connection)
virtual PBoolean | GarbageCollection ()
Customisation call backs
virtual SIPConnection * | CreateConnection (OpalCall &call, const PString &token, void *userData, const SIPURL &destination, OpalTransport *transport, SIP_PDU *invite, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)
virtual PBoolean | SetupTransfer (const PString &token, const PString &callIdentity, const PString &remoteParty, void *userData=NULL)
virtual PBoolean | ForwardConnection (SIPConnection &connection, const PString &forwardParty)
bool | ClearDialogContext (const PString &descriptor)
bool | ClearDialogContext (SIPDialogContext &context)
Protocol handling routines
OpalTransport * | CreateTransport (const SIPURL &remoteURL, const PString &localInterface=PString::Empty())
virtual void | HandlePDU (OpalTransport &transport)
virtual PBoolean | OnReceivedPDU (OpalTransport &transport, SIP_PDU *pdu)
virtual bool | OnReceivedConnectionlessPDU (OpalTransport &transport, SIP_PDU *pdu)
virtual void | OnReceivedResponse (SIPTransaction &transaction, SIP_PDU &response)
virtual PBoolean | OnReceivedINVITE (OpalTransport &transport, SIP_PDU *pdu)
virtual PBoolean | OnReceivedNOTIFY (OpalTransport &transport, SIP_PDU &response)
virtual PBoolean | OnReceivedREGISTER (OpalTransport &transport, SIP_PDU &pdu)
virtual PBoolean | OnReceivedSUBSCRIBE (OpalTransport &transport, SIP_PDU &pdu)
virtual bool | OnReceivedMESSAGE (OpalTransport &transport, SIP_PDU &response)
virtual bool | OnReceivedOPTIONS (OpalTransport &transport, SIP_PDU &response)
virtual void | OnTransactionFailed (SIPTransaction &transaction)
virtual void | OnRTPStatistics (const SIPConnection &connection, const RTP_Session &session) const
Public Member Functions inherited from OpalEndPoint
| OpalEndPoint (OpalManager &manager, const PCaselessString &prefix, unsigned attributes)
| ~OpalEndPoint ()
void | PrintOn (ostream &strm) const
PBoolean | StartListeners (const PStringArray &interfaces)
PBoolean | StartListener (const OpalTransportAddress &iface)
PBoolean | StartListener (OpalListener *listener)
virtual PStringArray | GetDefaultListeners () const
OpalListener * | FindListener (const OpalTransportAddress &iface)
bool | FindListenerForProtocol (const char *proto, OpalTransportAddress &addr)
PBoolean | StopListener (const OpalTransportAddress &iface)
PBoolean | RemoveListener (OpalListener *listener)
OpalTransportAddressArray | GetInterfaceAddresses (PBoolean excludeLocalHost=true, const OpalTransport *associatedTransport=NULL)
| PDECLARE_NOTIFIER (PThread, OpalEndPoint, ListenerCallback)
virtual void | OnNewConnection (OpalCall &call, OpalConnection &connection)
virtual PBoolean | OnSetUpConnection (OpalConnection &connection)
virtual PBoolean | OnIncomingConnection (OpalConnection &connection, unsigned options, OpalConnection::StringOptions *stringOptions)
virtual void | OnProceeding (OpalConnection &connection)
virtual void | OnAlerting (OpalConnection &connection)
virtual OpalConnection::AnswerCallResponse | OnAnswerCall (OpalConnection &connection, const PString &caller)
virtual void | OnConnected (OpalConnection &connection)
virtual void | OnEstablished (OpalConnection &connection)
virtual void | OnHold (OpalConnection &connection, bool fromRemote, bool onHold)
virtual void | OnHold (OpalConnection &connection)
virtual PBoolean | OnForwarded (OpalConnection &connection, const PString &remoteParty)
virtual bool | OnTransferNotify (OpalConnection &connection, const PStringToString &info)
virtual PBoolean | ClearCall (const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL)
virtual PBoolean | ClearCallSynchronous (const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL)
virtual void | ClearAllCalls (OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PBoolean wait=true)
PSafePtr< OpalConnection > | GetConnectionWithLock (const PString &token, PSafetyMode mode=PSafeReadWrite)
template<class ConnClass >
PSafePtr< ConnClass > | GetConnectionWithLockAs (const PString &token, PSafetyMode mode=PSafeReadWrite)
PStringList | GetAllConnections ()
PINDEX | GetConnectionCount () const
virtual PBoolean | HasConnection (const PString &token)
virtual void | DestroyConnection (OpalConnection *connection)
virtual void | AdjustMediaFormats (bool local, const OpalConnection &connection, OpalMediaFormatList &mediaFormats) const
virtual PBoolean | OnOpenMediaStream (OpalConnection &connection, OpalMediaStream &stream)
virtual PBoolean | CreateVideoInputDevice (const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, PBoolean &autoDelete)
virtual PBoolean | CreateVideoOutputDevice (const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PBoolean preview, PVideoOutputDevice *&device, PBoolean &autoDelete)
virtual void | OnUserInputString (OpalConnection &connection, const PString &value)
virtual void | OnUserInputTone (OpalConnection &connection, char tone, int duration)
virtual PString | ReadUserInput (OpalConnection &connection, const char *terminators="#\r\n", unsigned lastDigitTimeout=4, unsigned firstDigitTimeout=30)
virtual PBoolean | Message (const PString &to, const PString &body)
virtual PBoolean | Message (const PURL &to, const PString &type, const PString &body, PURL &from, PString &conversationId)
virtual void | OnMessageReceived (const OpalIM &message)
virtual void | OnMWIReceived (const PString &party, OpalManager::MessageWaitingType type, const PString &extraInfo)
OpalManager & | GetManager () const
const PString & | GetPrefixName () const
PBoolean | HasAttribute (Attributes opt) const
WORD | GetDefaultSignalPort () const
const OpalProductInfo & | GetProductInfo () const
void | SetProductInfo (const OpalProductInfo &info)
const PString & | GetDefaultLocalPartyName () const
virtual void | SetDefaultLocalPartyName (const PString &name)
const PString & | GetDefaultDisplayName () const
void | SetDefaultDisplayName (const PString &name)
unsigned | GetInitialBandwidth () const
void | SetInitialBandwidth (unsigned bandwidth)
const OpalListenerList & | GetListeners () const
const OpalConnection::StringOptions & | GetDefaultStringOptions () const
void | SetDefaultStringOptions (const OpalConnection::StringOptions &opts)
void | SetDefaultStringOption (const PCaselessString &key, const PString &data)
OpalConnection::SendUserInputModes | GetSendUserInputMode () const
void | SetSendUserInputMode (OpalConnection::SendUserInputModes mode)

## Protected Types

enum | { HighPriority = 80, LowPriority = 30 }
Protected Types inherited from OpalRTPEndPoint
typedef std::map< WORD, LocalRtpInfo > | LocalRtpInfoMap

## Protected Member Functions

| PDECLARE_NOTIFIER (PThread, SIPEndPoint, TransportThreadMain)
| PDECLARE_NOTIFIER (PTimer, SIPEndPoint, NATBindingRefresh)
| P_REMOVE_VIRTUAL_VOID (OnReceivedIntervalTooBrief(SIPTransaction &, SIP_PDU &))
| P_REMOVE_VIRTUAL_VOID (OnReceivedAuthenticationRequired(SIPTransaction &, SIP_PDU &))
| P_REMOVE_VIRTUAL_VOID (OnReceivedOK(SIPTransaction &, SIP_PDU &))
| P_REMOVE_VIRTUAL_VOID (OnMessageFailed(const SIPURL &, SIP_PDU::StatusCodes))
Protected Member Functions inherited from OpalEndPoint
OpalConnection * | AddConnection (OpalConnection *connection)

## Protected Attributes

SIPURL | proxy
PString | userAgentString
SIPConnection::PRACKMode | m_defaultPrackMode
bool | mimeForm
unsigned | maxRetries
PTimeInterval | retryTimeoutMin
PTimeInterval | retryTimeoutMax
PTimeInterval | nonInviteTimeout
PTimeInterval | pduCleanUpTimeout
PTimeInterval | inviteTimeout
PTimeInterval | m_progressTimeout
PTimeInterval | ackTimeout
PTimeInterval | registrarTimeToLive
PTimeInterval | notifierTimeToLive
PTimeInterval | natBindingTimeout
bool | m_registeredUserMode
bool | m_shuttingDown
SIPHandlersList | activeSIPHandlers
PStringToString | m_receivedConnectionTokens
PSafeDictionary< PString, SIPTransaction > | transactions
PTimer | natBindingTimer
NATBindingRefreshMethod | natMethod
PAtomicInteger | lastSentCSeq
int | m_defaultAppearanceCode
std::map< PString, RegistrationCompletion > | m_registrationComplete
ConnectionlessMessageNotifier | m_onConnectionlessMessage
SIPEndPoint::WorkThreadPool | m_connectionThreadPool
SIPEndPoint::WorkThreadPool | m_handlerThreadPool
InterfaceMonitor | m_highPriorityMonitor
InterfaceMonitor | m_lowPriorityMonitor
bool | m_disableTrying
Protected Attributes inherited from OpalRTPEndPoint
LocalRtpInfoMap | m_connectionsByRtpLocalPort
Protected Attributes inherited from OpalEndPoint
OpalManager & | manager
PCaselessString | prefixName
unsigned | attributeBits
WORD | defaultSignalPort
PINDEX | m_maxSizeUDP
OpalProductInfo | productInfo
PString | defaultLocalPartyName
PString | defaultDisplayName
unsigned | initialBandwidth
OpalConnection::StringOptions | m_defaultStringOptions
OpalConnection::SendUserInputModes | defaultSendUserInputMode
OpalListenerList | listeners
OpalEndPoint::ConnectionDict | connectionsActive
PMutex | inUseFlag

## Friends

void | InterfaceMonitor::OnAddInterface (const PIPSocket::InterfaceEntry &entry)
void | InterfaceMonitor::OnRemoveInterface (const PIPSocket::InterfaceEntry &entry)

## Detailed Description

Session Initiation Protocol endpoint.

## Member Typedef Documentation

typedef PNotifierTemplate<ConnectionlessMessageInfo &> SIPEndPoint::ConnectionlessMessageNotifier

typedef SIPSubscribe::SubscriptionStatus SIPEndPoint::SubscriptionStatus

Information provided on the subscription status.

## Member Enumeration Documentation

anonymous enum

protected

Enumerator
HighPriority |
LowPriority |

enum SIPEndPoint::NATBindingRefreshMethod

NAT Binding Refresh Method

Enumerator
None |
Options |
EmptyRequest |
NumMethods |

## Constructor & Destructor Documentation

SIPEndPoint::SIPEndPoint | ( | OpalManager & | manager,
|  | unsigned | maxConnectionThreads = `10`,
|  | unsigned | maxHandlerThreads = `5`
| ) |  |

Create a new endpoint.

SIPEndPoint::~SIPEndPoint | ( |  | ) |

Destroy endpoint.

## Member Function Documentation

void SIPEndPoint::AddTransaction | ( | SIPTransaction * | transaction | ) |

inline

References SIP_PDU::GetTransactionID(), and transactions.

void SIPEndPoint::AdjustToRegistration | ( | SIP_PDU & | pdu,
|  | const OpalTransport & | transport,
|  | const SIPConnection * | connection
| ) |  |

Adjust the outgoing PDU to registered information. Various header fields of the PDU must be adjusted to agree with values provided to/from the active registration for the domain the call is being made to. For example the "From" field must agree exactly with

If no active registration is available, the result of GetLocalURL() on the given transport is set to the Contact field.

virtual bool SIPEndPoint::CanNotify | ( | const PString & | eventPackage | ) |

virtual

Indicate notifications for the specified event package are supported.

Parameters

  eventPackage | Event package we support

bool SIPEndPoint::ClearDialogContext | ( | const PString & | descriptor | ) |

Clear a SIP connection by dialog identifer informataion. This function does not require an OPAL connection to operate, it will attempt to send a BYE to the dialog identified by the information in the SIPDialogContext structure.

This feature can be useful for servers that had an "unexpected exit" and various clients it was talking to at the time do not implement the RFC4028 session timers, so continue to try and send media forever. They need to be told to cease and desist.

Parameters

  descriptor | Descriptor string for call clearance

bool SIPEndPoint::ClearDialogContext | ( | SIPDialogContext & | context | ) |

Parameters

  context | Context for call clearance

virtual SIPConnection* SIPEndPoint::CreateConnection | ( | OpalCall & | call,
|  | const PString & | token,
|  | void * | userData,
|  | const SIPURL & | destination,
|  | OpalTransport * | transport,
|  | SIP_PDU * | invite,
|  | unsigned int | options = `0`,
|  | OpalConnection::StringOptions * | stringOptions = `NULL`
| ) |  |

virtual

Create a connection for the SIP endpoint. The default implementation is to create a OpalSIPConnection.

Parameters

  call | Owner of connection
  token | token used to identify connection
  userData | User data for connection
  destination | Destination for outgoing call
  transport | Transport INVITE has been received on
  invite | Original INVITE pdu
  options | connection options
  stringOptions | complex string options

virtual SIPRegisterHandler* SIPEndPoint::CreateRegisterHandler | ( | const SIPRegister::Params & | params | ) |

virtual

OpalTransport* SIPEndPoint::CreateTransport | ( | const SIPURL & | remoteURL,
|  | const PString & | localInterface = `PString::Empty()`
| ) |  |

Creates an OpalTransport instance, based on the address is interpreted as the remote address to which the transport should connect

virtual PBoolean SIPEndPoint::ForwardConnection | ( | SIPConnection & | connection,
|  | const PString & | forwardParty
| ) |  |

virtual

Forward the connection using the same token as the specified connection. Return true if the connection is being redirected.

Parameters

  connection | Connection to be forwarded
  forwardParty | Remote party to forward to

virtual PBoolean SIPEndPoint::GarbageCollection | ( |  | ) |

virtual

Execute garbage collection for endpoint. Returns true if all garbage has been collected. Default behaviour deletes the objects in the connectionsActive list.

Reimplemented from OpalEndPoint.

const PTimeInterval& SIPEndPoint::GetAckTimeout | ( |  | ) | const

inline

References ackTimeout.

virtual unsigned SIPEndPoint::GetAllowedMethods | ( |  | ) | const

virtual

Return a bit mask of the allowed SIP methods.

int SIPEndPoint::GetDefaultAppearanceCode | ( |  | ) | const

inline

Get the default line appearance code for new connections.

References m_defaultAppearanceCode.

SIPConnection::PRACKMode SIPEndPoint::GetDefaultPRACKMode | ( |  | ) | const

inline

Get default mode for PRACK support.

References m_defaultPrackMode.

virtual SIPURL SIPEndPoint::GetDefaultRegisteredPartyName | ( | const OpalTransport & | transport | ) |

virtual

Return the default registered party name URL.

virtual PString SIPEndPoint::GetDefaultTransport | ( |  | ) | const

virtual

Get the default transports for the endpoint type. Overrides the default behaviour to return udp and tcp.

Reimplemented from OpalEndPoint.

const PTimeInterval& SIPEndPoint::GetInviteTimeout | ( |  | ) | const

inline

References inviteTimeout.

virtual SIPURL SIPEndPoint::GetLocalURL | ( | const OpalTransport & | transport,
|  | const PString & | userName = `PString::Empty()`
| ) |  |

virtual

Return the local URL for the given transport and user name. That URL can be used as via address, and as contact field in outgoing requests.

The URL is translated if required.

If the transport is not running, the first listener transport will be used, if any.

Parameters

  transport | Transport on which we can receive new requests
  userName | The user name part of the contact field

unsigned SIPEndPoint::GetMaxRetries | ( |  | ) | const

inline

References maxRetries.

PBoolean SIPEndPoint::GetMIMEForm | ( |  | ) | const

inline

References mimeForm.

const PTimeInterval& SIPEndPoint::GetNATBindingTimeout | ( |  | ) | const

inline

References natBindingTimeout.

unsigned SIPEndPoint::GetNextCSeq | ( |  | ) |

inline

Return the next CSEQ for the next transaction.

References lastSentCSeq.

const PTimeInterval& SIPEndPoint::GetNonInviteTimeout | ( |  | ) | const

inline

References nonInviteTimeout.

const PTimeInterval& SIPEndPoint::GetNotifierTimeToLive | ( |  | ) | const

inline

References notifierTimeToLive.

const PTimeInterval& SIPEndPoint::GetPduCleanUpTimeout | ( |  | ) | const

inline

References pduCleanUpTimeout.

const PTimeInterval& SIPEndPoint::GetProgressTimeout | ( |  | ) | const

inline

References m_progressTimeout.

const SIPURL& SIPEndPoint::GetProxy | ( |  | ) | const

inline

Return the outbound proxy URL, if any.

References proxy.

PStringList SIPEndPoint::GetPublications | ( | const SIPSubscribe::EventPackage & | eventPackage,
|  | bool | includeOffline = `false`
| ) |  | const

inline

Returns a list of published entities.

Parameters

  eventPackage | Event package for publication
  includeOffline | Include offline publications

References activeSIPHandlers, SIPHandlersList::GetAddresses(), and SIP_PDU::Method_PUBLISH.

virtual SIPURL SIPEndPoint::GetRegisteredPartyName | ( | const SIPURL & | remoteURL,
|  | const OpalTransport & | transport
| ) |  |

virtual

Return the registered party name URL for the given host.

That URL can be used in the FORM field of the PDU's. The host part can be different from the registration domain.

virtual SIPURL SIPEndPoint::GetRegisteredProxy | ( | const SIPURL & | remoteURL | ) |

virtual

Return the registered proxy URL for the given host.

bool SIPEndPoint::GetRegisteredYserMode | ( |  | ) | const

inline

References m_registeredUserMode.

const PTimeInterval& SIPEndPoint::GetRegistrarTimeToLive | ( |  | ) | const

inline

References registrarTimeToLive.

PStringList SIPEndPoint::GetRegistrations | ( | bool | includeOffline = `false` | ) | const

inline

Returns a list of registered accounts.

Parameters

  includeOffline | Include offline registrations

References activeSIPHandlers, SIPHandlersList::GetAddresses(), and SIP_PDU::Method_REGISTER.

unsigned SIPEndPoint::GetRegistrationsCount | ( |  | ) | const

inline

Returns the number of registered accounts.

References activeSIPHandlers, SIPHandlersList::GetCount(), and SIP_PDU::Method_REGISTER.

const PTimeInterval& SIPEndPoint::GetRetryTimeoutMax | ( |  | ) | const

inline

References retryTimeoutMax.

const PTimeInterval& SIPEndPoint::GetRetryTimeoutMin | ( |  | ) | const

inline

References retryTimeoutMin.

PSafePtr<SIPConnection> SIPEndPoint::GetSIPConnectionWithLock | ( | const PString & | token,
|  | PSafetyMode | mode = `PSafeReadWrite`,
|  | SIP_PDU::StatusCodes * | errorCode = `NULL`
| ) |  |

Find a connection that uses the specified token. This searches the endpoint for the connection that contains the token as provided by functions such as MakeConnection().

Note the token may be a "replaces" style value of the form: "callid;to-tag=tag;from-tag=tag"

Parameters

  token | Token to identify connection
  mode | Lock mode
  errorCode | Error code if lock fails

unsigned SIPEndPoint::GetSubscriptionCount | ( | const SIPSubscribe::EventPackage & | eventPackage | ) |

inline

Returns the number of registered accounts.

Parameters

  eventPackage | Event package of subscription

References activeSIPHandlers, SIPHandlersList::GetCount(), and SIP_PDU::Method_SUBSCRIBE.

PStringList SIPEndPoint::GetSubscriptions | ( | const SIPSubscribe::EventPackage & | eventPackage,
|  | bool | includeOffline = `false`
| ) |  | const

inline

Returns a list of subscribed accounts for package.

Parameters

  eventPackage | Event package of subscription
  includeOffline | Include offline subscriptions

References activeSIPHandlers, SIPHandlersList::GetAddresses(), and SIP_PDU::Method_REGISTER.

PSafePtr<SIPTransaction> SIPEndPoint::GetTransaction | ( | const PString & | transactionID,
|  | PSafetyMode | mode = `PSafeReadWrite`
| ) |  |

inline

References transactions.

virtual PString SIPEndPoint::GetUserAgent | ( |  | ) | const

virtual

Get the User Agent for this endpoint. Default behaviour returns an empty string so the SIPConnection builds a valid string from the productInfo data.

These semantics are for backward compatibility.

SIP_PDU::StatusCodes SIPEndPoint::HandleAuthentication | ( | SIPAuthentication *& | authentication,
|  | unsigned & | authenticateErrors,
|  | const SIP_PDU & | response,
|  | const SIPURL & | proxyOverride,
|  | const PString & | username,
|  | const PString & | password
| ) |  |

Return the SIPAuthentication for a specific realm.

virtual void SIPEndPoint::HandlePDU | ( | OpalTransport & | transport | ) |

virtual

virtual PBoolean SIPEndPoint::IsAcceptedAddress | ( | const SIPURL & | toAddr | ) |

virtual

PBoolean SIPEndPoint::IsRegistered | ( | const PString & | aor,
|  | bool | includeOffline = `false`
| ) |  |

Determine if there is a registration for the entity. The "token" parameter string is typically the string returned by the Register() function which is guaranteed to uniquely identify the specific registration.

For backward compatibility, the AOR can also be used, but as it is possible to have two registrations to the same AOR, this should be avoided.

The includeOffline parameter indicates if the caller is interested in if we are, to the best of our knowledge, currently registered (have had recent confirmation) or we are not sure if we are registered or not, but are continually re-trying.

Parameters

  aor | AOR returned by Register()
  includeOffline | Include offline registrations

bool SIPEndPoint::IsSubscribed | ( | const PString & | aor,
|  | bool | includeOffline = `false`
| ) |  |

Returns true if the endpoint is subscribed to some event for the given to address. The includeOffline parameter indicates if the caller is interested in if we are, to the best of our knowlegde, currently subscribed (have had recent confirmation) or we are not sure if we are subscribed or not, but are continually re-trying.

Parameters

  aor | AOR returned by Subscribe()
  includeOffline | Include offline subscription

bool SIPEndPoint::IsSubscribed | ( | const PString & | eventPackage,
|  | const PString & | aor,
|  | bool | includeOffline = `false`
| ) |  |

Parameters

  eventPackage | Event package being unsubscribed
  aor | Address-of-record for subscription
  includeOffline | Include offline subscription

virtual PSafePtr<OpalConnection> SIPEndPoint::MakeConnection | ( | OpalCall & | call,
|  | const PString & | party,
|  | void * | userData,
|  | unsigned int | options,
|  | OpalConnection::StringOptions * | stringOptions
| ) |  |

virtual

Set up a connection to a remote party. This is called from the OpalManager::MakeConnection() function once it has determined that this is the endpoint for the protocol.

The general form for this party parameter is:

     [proto:][alias@][transport$]address[:port]

where the various fields will have meanings specific to the endpoint type. For example, with H.323 it could be "h323:Fred@site.com" which indicates a user Fred at gatekeeper size.com. Whereas for the PSTN endpoint it could be "pstn:5551234" which is to call 5551234 on the first available PSTN line.

The proto field is optional when passed to a specific endpoint. If it is present, however, it must agree with the endpoints protocol name or false is returned.

This function usually returns almost immediately with the connection continuing to occur in a new background thread.

If false is returned then the connection could not be established. For example if a PSTN endpoint is used and the assiciated line is engaged then it may return immediately. Returning a non-NULL value does not mean that the connection will succeed, only that an attempt is being made.

The default behaviour is pure.

Parameters

  call | Owner of connection
  party | Remote party to call
  userData | Arbitrary data to pass to connection
  options | options to pass to conneciton
  stringOptions | complex string options

Implements OpalEndPoint.

virtual PBoolean SIPEndPoint::Message | ( | OpalIM & | message | ) |

virtual

Send IM text

Reimplemented from OpalEndPoint.

virtual PBoolean SIPEndPoint::NewIncomingConnection | ( | OpalTransport * | transport | ) |

virtual

Handle new incoming connection from listener.

The default behaviour does nothing.

Parameters

  transport | Transport connection came in on

Reimplemented from OpalEndPoint.

bool SIPEndPoint::Notify | ( | const SIPURL & | targetAddress,
|  | const PString & | eventPackage,
|  | const PObject & | body
| ) |  |

Send notification to all remotes that are subcribed to the event package.

Parameters

  targetAddress | Address that was subscribed
  eventPackage | Event package for notification
  body | Body of notification

virtual void SIPEndPoint::OnDialogInfoReceived | ( | const SIPDialogNotification & | info | ) |

virtual

Callback called when dialog NOTIFY message is received

Parameters

  info | Information on dialog state change

virtual void SIPEndPoint::OnMESSAGECompleted | ( | const SIPMessage::Params & | params,
|  | SIP_PDU::StatusCodes | reason
| ) |  |

virtual

Callback called when a message completes in any manner

virtual void SIPEndPoint::OnOptionsCompleted | ( | const SIPOptions::Params & | params,
|  | const SIP_PDU & | response
| ) |  |

virtual

Callback called when an OPTIONS command is completed, either successfully or with error.

Parameters

  params | Original parameter for SendOPTIONS() call
  response | Response packet, check GetStatusCode() for result

virtual void SIPEndPoint::OnPresenceInfoReceived | ( | const SIPPresenceInfo & | info | ) |

virtual

Callback called when presence is received

Parameters

  info | Presence info publicised

virtual void SIPEndPoint::OnPresenceInfoReceived | ( | const PString & | identity,
|  | const PString & | basic,
|  | const PString & | note
| ) |  |

virtual

virtual bool SIPEndPoint::OnReceivedConnectionlessPDU | ( | OpalTransport & | transport,
|  | SIP_PDU * | pdu
| ) |  |

virtual

Handle an incoming SIP PDU not assigned to any connection

virtual PBoolean SIPEndPoint::OnReceivedINVITE | ( | OpalTransport & | transport,
|  | SIP_PDU * | pdu
| ) |  |

virtual

Handle an incoming INVITE request.

virtual bool SIPEndPoint::OnReceivedMESSAGE | ( | OpalTransport & | transport,
|  | SIP_PDU & | response
| ) |  |

virtual

Handle an incoming MESSAGE PDU.

virtual PBoolean SIPEndPoint::OnReceivedNOTIFY | ( | OpalTransport & | transport,
|  | SIP_PDU & | response
| ) |  |

virtual

Handle an incoming NOTIFY PDU.

virtual bool SIPEndPoint::OnReceivedOPTIONS | ( | OpalTransport & | transport,
|  | SIP_PDU & | response
| ) |  |

virtual

Handle an incoming OPTIONS PDU.

virtual PBoolean SIPEndPoint::OnReceivedPDU | ( | OpalTransport & | transport,
|  | SIP_PDU * | pdu
| ) |  |

virtual

Handle an incoming SIP PDU that has been full decoded

virtual PBoolean SIPEndPoint::OnReceivedREGISTER | ( | OpalTransport & | transport,
|  | SIP_PDU & | pdu
| ) |  |

virtual

Handle an incoming REGISTER PDU.

virtual void SIPEndPoint::OnReceivedResponse | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | response
| ) |  |

virtual

Handle an incoming response PDU.

virtual PBoolean SIPEndPoint::OnReceivedSUBSCRIBE | ( | OpalTransport & | transport,
|  | SIP_PDU & | pdu
| ) |  |

virtual

Handle an incoming SUBSCRIBE PDU.

virtual void SIPEndPoint::OnRegistered | ( | const PString & | aor,
|  | PBoolean | wasRegistering
| ) |  |

virtual

Callback called when a registration or an unregistration is successful. Deprecated, maintained for backward compatibility, use OnRegistrationStatus().

virtual void SIPEndPoint::OnRegistrationFailed | ( | const PString & | aor,
|  | SIP_PDU::StatusCodes | reason,
|  | PBoolean | wasRegistering
| ) |  |

virtual

Callback called when a registration to a SIP registrars fails. Deprecated, maintained for backward compatibility, use OnRegistrationStatus().

virtual void SIPEndPoint::OnRegistrationStatus | ( | const RegistrationStatus & | status | ) |

virtual

Callback called when a registration to a SIP registrar status.

Parameters

  status | Status of registration request

virtual void SIPEndPoint::OnRegistrationStatus | ( | const PString & | aor,
|  | PBoolean | wasRegistering,
|  | PBoolean | reRegistering,
|  | SIP_PDU::StatusCodes | reason
| ) |  |

virtual

virtual void SIPEndPoint::OnReleased | ( | OpalConnection & | connection | ) |

virtual

A call back function whenever a connection is broken. This function can do any internal cleaning up and waiting on background threads that may be using the connection object.

Note that there is not a one to one relationship with the OnEstablishedConnection() function. This function may be called without that function being called. For example if MakeConnection() was used but the call never completed.

Classes that override this function should make sure they call the ancestor version for correct operation.

An application will not typically call this function as it is used by the OpalManager during a release of the connection.

The default behaviour removes the connection from the internal database and calls the OpalManager function of the same name.

Parameters

  connection | Connection that was established

Reimplemented from OpalEndPoint.

virtual void SIPEndPoint::OnRTPStatistics | ( | const SIPConnection & | connection,
|  | const RTP_Session & | session
| ) |  | const

virtual

Callback from the RTP session for statistics monitoring. This is called every so many packets on the transmitter and receiver threads of the RTP session indicating that the statistics have been updated.

The default behaviour does nothing.

Parameters

  connection | Connection for the channel
  session | Session with statistics

virtual void SIPEndPoint::OnStartTransaction | ( | SIPConnection & | conn,
|  | SIPTransaction & | transaction
| ) |  |

virtual

virtual void SIPEndPoint::OnSubscriptionStatus | ( | const SubscriptionStatus & | status | ) |

virtual

Callback called when a subscription to a SIP UA status changes.

Parameters

  status | Status of subscription request

virtual void SIPEndPoint::OnSubscriptionStatus | ( | const PString & | eventPackage,
|  | const SIPURL & | uri,
|  | bool | wasSubscribing,
|  | bool | reSubscribing,
|  | SIP_PDU::StatusCodes | reason
| ) |  |

virtual

Callback called when a subscription to a SIP UA status changes. Now deprecated - called by OnSubscriptionStatus that accepts SIPHandler

Parameters

  eventPackage | Event package subscribed to
  uri | Target URI for the subscription.
  wasSubscribing | Indication the subscribing or unsubscribing
  reSubscribing | If subscribing then indication was refeshing subscription
  reason | Status of subscription

virtual void SIPEndPoint::OnSubscriptionStatus | ( | SIPSubscribeHandler & | handler,
|  | const SIPURL & | uri,
|  | bool | wasSubscribing,
|  | bool | reSubscribing,
|  | SIP_PDU::StatusCodes | reason
| ) |  |

virtual

Parameters

  handler | Event subscription paramaters
  uri | Target URI for the subscription.
  wasSubscribing | Indication the subscribing or unsubscribing
  reSubscribing | If subscribing then indication was refeshing subscription
  reason | Status of subscription

virtual void SIPEndPoint::OnTransactionFailed | ( | SIPTransaction & | transaction | ) |

virtual

Handle a SIP packet transaction failure

SIPEndPoint::P_REMOVE_VIRTUAL_VOID | ( | OnReceivedIntervalTooBrief(SIPTransaction &, SIP_PDU &) |  | ) |

protected

SIPEndPoint::P_REMOVE_VIRTUAL_VOID | ( | OnReceivedAuthenticationRequired(SIPTransaction &, SIP_PDU &) |  | ) |

protected

SIPEndPoint::P_REMOVE_VIRTUAL_VOID | ( | OnReceivedOK(SIPTransaction &, SIP_PDU &) |  | ) |

protected

SIPEndPoint::P_REMOVE_VIRTUAL_VOID | ( | OnMessageFailed(const SIPURL &, SIP_PDU::StatusCodes) |  | ) |

protected

SIPEndPoint::PDECLARE_NOTIFIER | ( | PThread | ,
|  | SIPEndPoint | ,
|  | TransportThreadMain |
| ) |  |

protected

SIPEndPoint::PDECLARE_NOTIFIER | ( | PTimer | ,
|  | SIPEndPoint | ,
|  | NATBindingRefresh |
| ) |  |

protected

PBoolean SIPEndPoint::Ping | ( | const PURL & | to | ) |

Send a SIP PING to the remote host

bool SIPEndPoint::Publish | ( | const SIPSubscribe::Params & | params,
|  | const PString & | body,
|  | PString & | aor
| ) |  |

Publish new state information. A expire time of zero will cease to automatically update the publish.

bool SIPEndPoint::Publish | ( | const PString & | to,
|  | const PString & | body,
|  | unsigned | expire = `300`
| ) |  |

Parameters

  to | Address to send PUBLISH
  body | Body of PUBLISH
  expire | Time between automatic updates in seconds.

bool SIPEndPoint::PublishPresence | ( | const SIPPresenceInfo & | info,
|  | unsigned | expire = `300`
| ) |  |

Publish new state information. Only the basic & note fields of the PIDF+xml are supported for now.

Parameters

  info | Presence info to publish
  expire | Refresh time

bool SIPEndPoint::Register | ( | const SIPRegister::Params & | params,
|  | PString & | aor,
|  | SIP_PDU::StatusCodes * | reason = `NULL`
| ) |  |

Register an entity to a registrar. This function is asynchronous to permit several registrations to occur at the same time. It can be called several times for different hosts and users.

The params.m_addressOfRecord field is the only field required, though typically params.m_password is also required. A registration for the user part of params.m_addressOfRecord is made to the a registrar associated with the domain part of the field. The authentication identity is the same as the user field, though this may be set to soemthing different via the params.m_authID field.

The params.m_registrarAddress may indicate the specific hostname to use for the registrar rather than using the domain part of params.m_addressOfRecord field.

To aid in flexbility if the params.m_addressOfRecord does not contain a domain and the params.m_registrarAddress does, the the AOR is constructed from them.

The params.m_realm can be specified when registering, this will allow to find the correct authentication information when being requested. If no realm is specified, authentication will occur with the "best guess" of authentication parameters.

The Contact address is normally constructed from the listeners active on the SIPEndPoint. This may be overridden to an explicit value via the params.m_contactAddress field.

The returned "token" is a string that can be used in functions such as Unregister() or IsRegistered(). While it possible to use the AOR for those functions, it is not recommended as a) there may be more than one registration for an AOR and b) the AOR may be constructed from

Parameters

  params | Registration parameters
  aor | Resultant address-of-record for unregister
  reason | If not null, wait for completion, may take some time

bool SIPEndPoint::Register | ( | const SIPRegister::Params & | params,
|  | PString & | aor,
|  | bool | asynchronous
| ) |  |

Parameters

  params | Registration parameters
  aor | Resultant address-of-record for unregister
  asynchronous | Wait for completion, may take some time

bool P_DEPRECATED SIPEndPoint::Register | ( | const PString & | host,
|  | const PString & | user = `PString::Empty()`,
|  | const PString & | autName = `PString::Empty()`,
|  | const PString & | password = `PString::Empty()`,
|  | const PString & | authRealm = `PString::Empty()`,
|  | unsigned | expire = `0`,
|  | const PTimeInterval & | minRetryTime = `PMaxTimeInterval`,
|  | const PTimeInterval & | maxRetryTime = `PMaxTimeInterval`
| ) |  |

Registration function for backward compatibility.

bool SIPEndPoint::SendMESSAGE | ( | SIPMessage::Params & | params | ) |

Send SIP message

void SIPEndPoint::SendNotifyDialogInfo | ( | const SIPDialogNotification & | info | ) |

Parameters

  info | Information on dialog state change

virtual bool SIPEndPoint::SendOPTIONS | ( | const SIPOptions::Params & | params | ) |

virtual

Send SIP OPTIONS

void SIPEndPoint::SetAckTimeout | ( | const PTimeInterval & | t | ) |

inline

References ackTimeout.

void SIPEndPoint::SetConnectionlessMessageNotifier | ( | const ConnectionlessMessageNotifier & | notifier | ) |

inline

References m_onConnectionlessMessage.

void SIPEndPoint::SetDefaultAppearanceCode | ( | int | code | ) |

inline

Set the default line appearance code for new connections.

References m_defaultAppearanceCode.

void SIPEndPoint::SetDefaultPRACKMode | ( | SIPConnection::PRACKMode | mode | ) |

inline

Set default mode for PRACK support.

References m_defaultPrackMode.

void SIPEndPoint::SetInviteTimeout | ( | const PTimeInterval & | t | ) |

inline

References inviteTimeout.

void SIPEndPoint::SetMaxRetries | ( | unsigned | r | ) |

inline

References maxRetries.

void SIPEndPoint::SetMIMEForm | ( | PBoolean | v | ) |

inline

References mimeForm.

void SIPEndPoint::SetNATBindingRefreshMethod | ( | const NATBindingRefreshMethod | m | ) |

inline

Set the NAT Binding Refresh Method

References natMethod.

void SIPEndPoint::SetNATBindingTimeout | ( | const PTimeInterval & | t | ) |

inline

References natBindingTimeout, and natBindingTimer.

void SIPEndPoint::SetNonInviteTimeout | ( | const PTimeInterval & | t | ) |

inline

References nonInviteTimeout.

void SIPEndPoint::SetNotifierTimeToLive | ( | const PTimeInterval & | t | ) |

inline

References notifierTimeToLive.

void SIPEndPoint::SetPduCleanUpTimeout | ( | const PTimeInterval & | t | ) |

inline

References pduCleanUpTimeout.

void SIPEndPoint::SetProgressTimeout | ( | const PTimeInterval & | t | ) |

inline

References m_progressTimeout.

void SIPEndPoint::SetProxy | ( | const SIPURL & | url | ) |

Set the outbound proxy URL.

void SIPEndPoint::SetProxy | ( | const PString & | hostname,
|  | const PString & | username,
|  | const PString & | password
| ) |  |

Set the outbound proxy URL.

void SIPEndPoint::SetRegisteredUserMode | ( | bool | v | ) |

inline

Set registration search mode. If true then only the user indicated as "local" address (e.g. from OPAL_OPT_CALLING_PARTY_NAME etc) by the will be used in searches of the registrations. No default to first user of the same domain will be performed.

References m_registeredUserMode.

void SIPEndPoint::SetRegistrarTimeToLive | ( | const PTimeInterval & | t | ) |

inline

References registrarTimeToLive.

void SIPEndPoint::SetRetryTimeouts | ( | const PTimeInterval & | t1,
|  | const PTimeInterval & | t2
| ) |  |

inline

References retryTimeoutMax, and retryTimeoutMin.

virtual PBoolean SIPEndPoint::SetupTransfer | ( | const PString & | token,
|  | const PString & | callIdentity,
|  | const PString & | remoteParty,
|  | void * | userData = `NULL`
| ) |  |

virtual

Setup a connection transfer a connection for the SIP endpoint.

Parameters

  token | Existing connection to be transferred
  callIdentity | Call identity of the secondary call (if it exists)
  remoteParty | Remote party to transfer the existing call to
  userData | user data to pass to CreateConnection

void SIPEndPoint::SetUserAgent | ( | const PString & | str | ) |

inline

Set the User Agent for the endpoint.

References userAgentString.

virtual void SIPEndPoint::ShutDown | ( |  | ) |

virtual

Shut down the endpoint, this is called by the OpalManager just before destroying the object and can be handy to make sure some things are stopped before the vtable gets clobbered.

Reimplemented from OpalEndPoint.

bool SIPEndPoint::Subscribe | ( | const SIPSubscribe::Params & | params,
|  | PString & | token,
|  | bool | tokenIsAOR = `true`
| ) |  |

Subscribe to an agent to get event notifications. This function is asynchronous to permit several subscriptions to occur at the same time. It can be called several times for different hosts and users.

The params.m_eventPackage and params.m_addressOfRecord field are the only field required, though typically params.m_password is also required. A subscription for the user part of params.m_addressOfRecord is made to the an agent associated with the domain part of the field. The authentication identity is the same as the user field, though this may be set to soemthing different via the params.m_authID field.

The params.m_agentAddress may indicate the specific hostname to use for the registrar rather than using the domain part of params.m_addressOfRecord field.

To aid in flexbility if the params.m_addressOfRecord does not contain a domain and the params.m_agentAddress does, the the AOR is constructed from them.

The params.m_realm can be specified when subcribing, this will allow to find the correct authentication information when being requested. If no realm is specified, authentication will occur with the "best guess" of authentication parameters.

The Contact address is normally constructed from the SIPEndPoint local identity.

The returned "token" is a string that can be used in functions such as Unregister() or IsRegistered(). While it possible to use the user supplied AOR for those functions, it is not recommended as a) there may be more than one registration for an AOR and b) the AOR may be constructed from fields in the params argument and not be what the user expects.

The tokenIsAOR can also be used, if false, to return the globally unique ID used for the handler. This is the preferred method, even though the default is to not use it, that is for backward compatibility reasons.

Parameters

  params | Subscription parameters
  token | Resultant token for unsubscribe
  tokenIsAOR | Token is the address-of-record

bool SIPEndPoint::Subscribe | ( | SIPSubscribe::PredefinedPackages | eventPackage,
|  | unsigned | expire,
|  | const PString & | aor
| ) |  |

Parameters

  eventPackage | Event package being unsubscribed
  expire | Expiry time in seconds
  aor | Address-of-record for subscription

bool SIPEndPoint::Unregister | ( | const PString & | aor | ) |

Unregister the address-of-record from a registrar. The "token" parameter string is typically the string returned by the Register() function which is guaranteed to uniquely identify the specific registration.

For backward compatibility, the AOR can also be used, but as it is possible to have two registrations to the same AOR, this should be avoided.

Parameters

  aor | AOR returned by Register()

bool SIPEndPoint::UnregisterAll | ( |  | ) |

Unregister all current registrations. Returns true if at least one registrar is unregistered.

bool SIPEndPoint::UnsubcribeAll | ( | SIPSubscribe::PredefinedPackages | eventPackage | ) |

Unsubscribe all current subscriptions. Returns true if at least one subscription is unsubscribed.

Parameters

  eventPackage | Event package being unsubscribed

bool SIPEndPoint::UnsubcribeAll | ( | const PString & | eventPackage | ) |

Parameters

  eventPackage | Event package being unsubscribed

bool SIPEndPoint::Unsubscribe | ( | const PString & | aor,
|  | bool | invalidateNotifiers = `false`
| ) |  |

Unsubscribe a current subscriptions. The "token" parameter string is typically the string returned by the Subscribe() function which is guaranteed to uniquely identify the specific registration.

For backward compatibility, the AOR can also be used, but as it is possible to have two susbcriptions to the same AOR, this should be avoided.

Parameters

  aor | Unique token for registration
  invalidateNotifiers | Notifiers in SIPSubscribe::Params are to be reset

bool SIPEndPoint::Unsubscribe | ( | SIPSubscribe::PredefinedPackages | eventPackage,
|  | const PString & | aor,
|  | bool | invalidateNotifiers = `false`
| ) |  |

Parameters

  eventPackage | Event package being unsubscribed
  aor | Address-of-record for subscription
  invalidateNotifiers | Notifiers in SIPSubscribe::Params are to be reset

bool SIPEndPoint::Unsubscribe | ( | const PString & | eventPackage,
|  | const PString & | aor,
|  | bool | invalidateNotifiers = `false`
| ) |  |

Parameters

  eventPackage | Event package being unsubscribed
  aor | Address-of-record for subscription
  invalidateNotifiers | Notifiers in SIPSubscribe::Params are to be reset

void SIPEndPoint::UpdateHandlerIndexes | ( | SIPHandler * | handler | ) |

inline

References activeSIPHandlers, and SIPHandlersList::Update().

## Friends And Related Function Documentation

void InterfaceMonitor::OnAddInterface | ( | const PIPSocket::InterfaceEntry & | entry | ) |

friend

void InterfaceMonitor::OnRemoveInterface | ( | const PIPSocket::InterfaceEntry & | entry | ) |

friend

## Field Documentation

PTimeInterval SIPEndPoint::ackTimeout

protected

Referenced by GetAckTimeout(), and SetAckTimeout().

SIPHandlersList SIPEndPoint::activeSIPHandlers

protected

Referenced by GetPublications(), GetRegistrations(), GetRegistrationsCount(), GetSubscriptionCount(), GetSubscriptions(), and UpdateHandlerIndexes().

PTimeInterval SIPEndPoint::inviteTimeout

protected

Referenced by GetInviteTimeout(), and SetInviteTimeout().

PAtomicInteger SIPEndPoint::lastSentCSeq

protected

Referenced by GetNextCSeq().

SIPEndPoint::WorkThreadPool SIPEndPoint::m_connectionThreadPool

protected

int SIPEndPoint::m_defaultAppearanceCode

protected

Referenced by GetDefaultAppearanceCode(), and SetDefaultAppearanceCode().

SIPConnection::PRACKMode SIPEndPoint::m_defaultPrackMode

protected

Referenced by GetDefaultPRACKMode(), and SetDefaultPRACKMode().

bool SIPEndPoint::m_disableTrying

protected

SIPEndPoint::WorkThreadPool SIPEndPoint::m_handlerThreadPool

protected

InterfaceMonitor SIPEndPoint::m_highPriorityMonitor

protected

InterfaceMonitor SIPEndPoint::m_lowPriorityMonitor

protected

ConnectionlessMessageNotifier SIPEndPoint::m_onConnectionlessMessage

protected

Referenced by SetConnectionlessMessageNotifier().

PTimeInterval SIPEndPoint::m_progressTimeout

protected

Referenced by GetProgressTimeout(), and SetProgressTimeout().

PStringToString SIPEndPoint::m_receivedConnectionTokens

protected

bool SIPEndPoint::m_registeredUserMode

protected

Referenced by GetRegisteredYserMode(), and SetRegisteredUserMode().

std::map<PString, RegistrationCompletion> SIPEndPoint::m_registrationComplete

protected

bool SIPEndPoint::m_shuttingDown

protected

unsigned SIPEndPoint::maxRetries

protected

Referenced by GetMaxRetries(), and SetMaxRetries().

bool SIPEndPoint::mimeForm

protected

Referenced by GetMIMEForm(), and SetMIMEForm().

PTimeInterval SIPEndPoint::natBindingTimeout

protected

Referenced by GetNATBindingTimeout(), and SetNATBindingTimeout().

PTimer SIPEndPoint::natBindingTimer

protected

Referenced by SetNATBindingTimeout().

NATBindingRefreshMethod SIPEndPoint::natMethod

protected

Referenced by SetNATBindingRefreshMethod().

PTimeInterval SIPEndPoint::nonInviteTimeout

protected

Referenced by GetNonInviteTimeout(), and SetNonInviteTimeout().

PTimeInterval SIPEndPoint::notifierTimeToLive

protected

Referenced by GetNotifierTimeToLive(), and SetNotifierTimeToLive().

PTimeInterval SIPEndPoint::pduCleanUpTimeout

protected

Referenced by GetPduCleanUpTimeout(), and SetPduCleanUpTimeout().

SIPURL SIPEndPoint::proxy

protected

Referenced by GetProxy().

PTimeInterval SIPEndPoint::registrarTimeToLive

protected

Referenced by GetRegistrarTimeToLive(), and SetRegistrarTimeToLive().

PTimeInterval SIPEndPoint::retryTimeoutMax

protected

Referenced by GetRetryTimeoutMax(), and SetRetryTimeouts().

PTimeInterval SIPEndPoint::retryTimeoutMin

protected

Referenced by GetRetryTimeoutMin(), and SetRetryTimeouts().

PSafeDictionary<PString, SIPTransaction> SIPEndPoint::transactions

protected

Referenced by AddTransaction(), and GetTransaction().

PString SIPEndPoint::userAgentString

protected

Referenced by SetUserAgent().

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

- sipep.h