SIPEndPoint Class Reference

#include <sipep.h>

Inheritance diagram for SIPEndPoint:

[legend]
Collaboration diagram for SIPEndPoint:
[legend]

Public Types

typedef SIPSubscribe::SubscriptionStatus SubscriptionStatus
typedef PNotifierTemplate<
ConnectionlessMessageInfo & > 
ConnectionlessMessageNotifier
typedef KeepAliveType NATBindingRefreshMethod
 CannotNotify
 Refuse SUBSCRIBE.
 CanNotifyImmediate
 Accept SUBSCRIBE and send NOTIFY.
 CanNotifyDeferrred
 > Accept SUBSCRIBE, but NOTIFY will be sent at a later time by caller
 NoKeepAlive
 KeepAliveByCRLF
 KeepAliveByOPTION
 NumMethods
enum  CanNotifyResult { CannotNotify, CanNotifyImmediate, CanNotifyDeferrred }
enum  KeepAliveType { NoKeepAlive, KeepAliveByCRLF, KeepAliveByOPTION, NumMethods }

Public Member Functions

PSafePtr< SIPConnectionGetSIPConnectionWithLock (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.
PBoolean IsRegistered (const PString &aor, bool includeOffline=false)
bool Unregister (const PString &aor)
bool UnregisterAll ()
unsigned GetRegistrationsCount () const
PStringList GetRegistrations (bool includeOffline=false) const
bool GetRegistrationStatus (const PString &token, RegistrationStatus &status)
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
bool GetSubscriptionStatus (const PString &token, const PString &eventPackage, SubscriptionStatus &status)
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 CanNotifyResult CanNotify (const PString &eventPackage, const SIPURL &aor)
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 void OnRegInfoReceived (const SIPRegNotification &info)
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
PBoolean Ping (const PURL &to)
const PStringSet & GetAllowedEvents () const
SIPConnection::PRACKMode GetDefaultPRACKMode () const
void SetDefaultPRACKMode (SIPConnection::PRACKMode mode)
void SetMaxPacketSizeUDP (PINDEX sz)
PINDEX GetMaxPacketSizeUDP () 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
P_DEPRECATED void SetNATBindingTimeout (const PTimeInterval &t)
P_DEPRECATED const PTimeInterval & GetNATBindingTimeout () const
void GetKeepAlive (PTimeInterval &timeout, KeepAliveType &type)
void SetKeepAlive (const PTimeInterval &timeout, KeepAliveType type)
void AddTransaction (SIPTransaction *transaction)
PSafePtr< SIPTransactionGetTransaction (const PString &transactionID, PSafetyMode mode=PSafeReadWrite)
unsigned GetNextCSeq ()
void SetRegisteredUserMode (bool v)
bool GetRegisteredUserMode () const
bool GetAuthentication (const PString &realm, PString &authId, PString &password)
virtual SIPURL GetDefaultLocalURL (const OpalTransport &transport)
void AdjustToRegistration (SIP_PDU &pdu, SIPConnection *connection=NULL, const OpalTransport *transport=NULL)
const SIPURLGetProxy () 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
P_DEPRECATED void SetNATBindingRefreshMethod (const NATBindingRefreshMethod type)
virtual SIPRegisterHandlerCreateRegisterHandler (const SIPRegister::Params &params)
virtual void OnStartTransaction (SIPConnection &conn, SIPTransaction &transaction)
PSafePtr< SIPHandlerFindSIPHandlerByCallID (const PString &callID, PSafetyMode m)
void UpdateHandlerIndexes (SIPHandler *handler)
SIPThreadPoolGetThreadPool ()
Construction
 SIPEndPoint (OpalManager &manager, unsigned maxThreads=15)
 ~SIPEndPoint ()
Overrides from OpalEndPoint
virtual void ShutDown ()
virtual PString GetDefaultTransport () const
virtual WORD GetDefaultSignalPort () const
virtual PStringList GetNetworkURIs (const PString &name) const
virtual void NewIncomingConnection (OpalListener &listener, const OpalTransportPtr &transport)
virtual PSafePtr< OpalConnectionMakeConnection (OpalCall &call, const PString &party, void *userData, unsigned int options, OpalConnection::StringOptions *stringOptions)
virtual void OnReleased (OpalConnection &connection)
virtual void OnConferenceStatusChanged (OpalEndPoint &endpoint, const PString &uri, OpalConferenceState::ChangeType change)
virtual PBoolean GarbageCollection ()
Customisation call backs
virtual SIPConnectionCreateConnection (const SIPConnection::Init &init)
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
OpalTransportPtr GetTransport (const SIPTransactionOwner &transactor, SIP_PDU::StatusCodes &reason)
virtual void HandlePDU (const OpalTransportPtr &transport)
virtual bool OnReceivedPDU (SIP_PDU *pdu)
virtual bool OnReceivedConnectionlessPDU (SIP_PDU *pdu)
virtual void OnReceivedResponse (SIPTransaction &transaction, SIP_PDU &response)
virtual bool OnReceivedINVITE (SIP_PDU *pdu)
virtual bool OnReceivedNOTIFY (SIP_PDU &request)
virtual bool OnReceivedREGISTER (SIP_PDU &request)
virtual bool OnReceivedSUBSCRIBE (SIP_PDU &request, SIPDialogContext *dialog)
virtual bool OnReceivedMESSAGE (SIP_PDU &request)
virtual bool OnReceivedOPTIONS (SIP_PDU &request)
virtual void OnTransactionFailed (SIPTransaction &transaction)

Protected Types

typedef std::multimap< PString,
SIPURL
ConferenceMap

Protected Member Functions

void AddTransport (const OpalTransportPtr &transport)
void TransportThreadMain (OpalTransportPtr transport)
PSafePtr< SIPHandlerFindHandlerByPDU (const SIP_PDU &pdu, PSafetyMode mode)
 PDECLARE_InterfaceNotifier (SIPEndPoint, OnHighPriorityInterfaceChange)
 PDECLARE_InterfaceNotifier (SIPEndPoint, OnLowPriorityInterfaceChange)
 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))
 P_REMOVE_VIRTUAL (SIPConnection *, CreateConnection(OpalCall &, const PString &, void *, const SIPURL &, OpalTransport *, SIP_PDU *, unsigned, OpalConnection::StringOptions *), NULL)
 P_REMOVE_VIRTUAL (PBoolean, OnReceivedPDU(OpalTransport &, SIP_PDU *), false)
 P_REMOVE_VIRTUAL (bool, OnReceivedConnectionlessPDU(OpalTransport &, SIP_PDU *), false)
 P_REMOVE_VIRTUAL (PBoolean, OnReceivedINVITE(OpalTransport &, SIP_PDU *), false)
 P_REMOVE_VIRTUAL (PBoolean, OnReceivedNOTIFY(OpalTransport &, SIP_PDU &), false)
 P_REMOVE_VIRTUAL (PBoolean, OnReceivedREGISTER(OpalTransport &, SIP_PDU &), false)
 P_REMOVE_VIRTUAL (PBoolean, OnReceivedSUBSCRIBE(OpalTransport &, SIP_PDU &, SIPDialogContext *), false)
 P_REMOVE_VIRTUAL (bool, OnReceivedMESSAGE(OpalTransport &, SIP_PDU &), false)
 P_REMOVE_VIRTUAL (bool, OnReceivedOPTIONS(OpalTransport &, SIP_PDU &), false)

Protected Attributes

SIPURL m_proxy
PString m_userAgentString
PStringSet m_allowedEvents
SIPConnection::PRACKMode m_defaultPrackMode
PINDEX m_maxPacketSizeUDP
unsigned maxRetries
PTimeInterval retryTimeoutMin
PTimeInterval retryTimeoutMax
PTimeInterval nonInviteTimeout
PTimeInterval pduCleanUpTimeout
PTimeInterval inviteTimeout
PTimeInterval m_progressTimeout
PTimeInterval ackTimeout
PTimeInterval registrarTimeToLive
PTimeInterval notifierTimeToLive
PTimeInterval natBindingTimeout
PTimeInterval m_keepAliveTimeout
KeepAliveType m_keepAliveType
bool m_registeredUserMode
bool m_shuttingDown
PSafeDictionary< OpalTransportAddress,
OpalTransport
m_transportsTable
SIPHandlersList activeSIPHandlers
PStringToString m_receivedConnectionTokens
PMutex m_receivedConnectionMutex
PSafeSortedList< SIPTransactionBasem_transactions
PAtomicInteger m_lastSentCSeq
int m_defaultAppearanceCode
std::map< PString, RegistrationCompletionm_registrationComplete
ConnectionlessMessageNotifier m_onConnectionlessMessage
ConferenceMap m_conferenceAOR
SIPThreadPool m_threadPool
bool m_disableTrying

Data Structures

struct  ConnectionlessMessageInfo
struct  RegistrationCompletion
struct  RegistrationStatus

Detailed Description

Session Initiation Protocol endpoint.


Member Typedef Documentation

typedef std::multimap<PString, SIPURL> SIPEndPoint::ConferenceMap [protected]

typedef PNotifierTemplate<ConnectionlessMessageInfo &> SIPEndPoint::ConnectionlessMessageNotifier

typedef KeepAliveType SIPEndPoint::NATBindingRefreshMethod

typedef SIPSubscribe::SubscriptionStatus SIPEndPoint::SubscriptionStatus

Information provided on the subscription status.


Member Enumeration Documentation

enum SIPEndPoint::CanNotifyResult

Indicate notification capability for an event package. Default behaviour handles conference and presence event packages if the aor parameter matches something we have.

All other event packages are checked against the m_allowedEvents set member variable.

Enumerator:
CannotNotify  Refuse SUBSCRIBE.
CanNotifyImmediate  Accept SUBSCRIBE and send NOTIFY.
CanNotifyDeferrred  > Accept SUBSCRIBE, but NOTIFY will be sent at a later time by caller

enum SIPEndPoint::KeepAliveType

Keep Alive Method

Enumerator:
NoKeepAlive 
KeepAliveByCRLF 
KeepAliveByOPTION 
NumMethods 


Constructor & Destructor Documentation

SIPEndPoint::SIPEndPoint ( OpalManager manager,
unsigned  maxThreads = 15 
)

Create a new endpoint.

SIPEndPoint::~SIPEndPoint (  ) 

Destroy endpoint.


Member Function Documentation

void SIPEndPoint::AddTransaction ( SIPTransaction transaction  )  [inline]

void SIPEndPoint::AddTransport ( const OpalTransportPtr transport  )  [protected]

void SIPEndPoint::AdjustToRegistration ( SIP_PDU pdu,
SIPConnection connection = NULL,
const OpalTransport transport = NULL 
)

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]

virtual CanNotifyResult SIPEndPoint::CanNotify ( const PString &  eventPackage,
const SIPURL aor 
) [virtual]

Indicate notifications for the specified event package are supported.

Parameters:
eventPackage  Event package we support
aor  Address of record for SUBSCRIBE

bool SIPEndPoint::ClearDialogContext ( SIPDialogContext context  ) 

Parameters:
context  Context for call clearance

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

virtual SIPConnection* SIPEndPoint::CreateConnection ( const SIPConnection::Init init  )  [virtual]

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

Parameters:
init  Initialisation parameters

virtual SIPRegisterHandler* SIPEndPoint::CreateRegisterHandler ( const SIPRegister::Params params  )  [virtual]

PSafePtr<SIPHandler> SIPEndPoint::FindHandlerByPDU ( const SIP_PDU pdu,
PSafetyMode  mode 
) [protected]

PSafePtr<SIPHandler> SIPEndPoint::FindSIPHandlerByCallID ( const PString &  callID,
PSafetyMode  m 
) [inline]

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]

const PStringSet& SIPEndPoint::GetAllowedEvents (  )  const [inline]

Get the allowed events for SUBSCRIBE commands.

virtual unsigned SIPEndPoint::GetAllowedMethods (  )  const [virtual]

Return a bit mask of the allowed SIP methods.

bool SIPEndPoint::GetAuthentication ( const PString &  realm,
PString &  authId,
PString &  password 
)

Return the SIPAuthentication for a specific realm.

int SIPEndPoint::GetDefaultAppearanceCode (  )  const [inline]

Get the default line appearance code for new connections.

virtual SIPURL SIPEndPoint::GetDefaultLocalURL ( const OpalTransport transport  )  [virtual]

Return the default Contact URL.

SIPConnection::PRACKMode SIPEndPoint::GetDefaultPRACKMode (  )  const [inline]

Get default mode for PRACK support.

virtual WORD SIPEndPoint::GetDefaultSignalPort (  )  const [virtual]

Get the default signal port for this endpoint.

Reimplemented from OpalEndPoint.

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]

void SIPEndPoint::GetKeepAlive ( PTimeInterval &  timeout,
KeepAliveType type 
) [inline]

PINDEX SIPEndPoint::GetMaxPacketSizeUDP (  )  const [inline]

unsigned SIPEndPoint::GetMaxRetries (  )  const [inline]

P_DEPRECATED const PTimeInterval& SIPEndPoint::GetNATBindingTimeout (  )  const [inline]

virtual PStringList SIPEndPoint::GetNetworkURIs ( const PString &  name  )  const [virtual]

Reimplemented from OpalEndPoint.

unsigned SIPEndPoint::GetNextCSeq (  )  [inline]

Return the next CSEQ for the next transaction.

const PTimeInterval& SIPEndPoint::GetNonInviteTimeout (  )  const [inline]

const PTimeInterval& SIPEndPoint::GetNotifierTimeToLive (  )  const [inline]

const PTimeInterval& SIPEndPoint::GetPduCleanUpTimeout (  )  const [inline]

const PTimeInterval& SIPEndPoint::GetProgressTimeout (  )  const [inline]

const SIPURL& SIPEndPoint::GetProxy (  )  const [inline]

Return the outbound proxy URL, if any.

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

bool SIPEndPoint::GetRegisteredUserMode (  )  const [inline]

const PTimeInterval& SIPEndPoint::GetRegistrarTimeToLive (  )  const [inline]

PStringList SIPEndPoint::GetRegistrations ( bool  includeOffline = false  )  const [inline]

Returns a list of registered accounts.

Parameters:
includeOffline  Include offline registrations

unsigned SIPEndPoint::GetRegistrationsCount (  )  const [inline]

Returns the number of registered accounts.

bool SIPEndPoint::GetRegistrationStatus ( const PString &  token,
RegistrationStatus status 
)

Get current registration status. Returns false if there is no registration that match the aor/call-id

Parameters:
status  Address-of-record, or call-id Returned status

const PTimeInterval& SIPEndPoint::GetRetryTimeoutMax (  )  const [inline]

const PTimeInterval& SIPEndPoint::GetRetryTimeoutMin (  )  const [inline]

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

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

bool SIPEndPoint::GetSubscriptionStatus ( const PString &  token,
const PString &  eventPackage,
SubscriptionStatus status 
)

Get current registration status. Returns false if there is no registration that match the aor/call-id

Parameters:
eventPackage  Address-of-record, or call-id Event package being unsubscribed
status  Returned status

SIPThreadPool& SIPEndPoint::GetThreadPool (  )  [inline]

PSafePtr<SIPTransaction> SIPEndPoint::GetTransaction ( const PString &  transactionID,
PSafetyMode  mode = PSafeReadWrite 
) [inline]

OpalTransportPtr SIPEndPoint::GetTransport ( const SIPTransactionOwner transactor,
SIP_PDU::StatusCodes reason 
)

Find or create an OpalTransport instance. A single transport exists to a specific remote system and all SIP entities (connections or handlers) use transports out of this pool.

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.

virtual void SIPEndPoint::HandlePDU ( const OpalTransportPtr 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 &  eventPackage,
const PString &  aor,
bool  includeOffline = false 
)

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

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

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 void SIPEndPoint::NewIncomingConnection ( OpalListener listener,
const OpalTransportPtr transport 
) [virtual]

Handle new incoming connection from listener.

Parameters:
listener  Listner that created transport
transport  Transport connection came in on

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::OnConferenceStatusChanged ( OpalEndPoint endpoint,
const PString &  uri,
OpalConferenceState::ChangeType  change 
) [virtual]

Call back when conferencing state information changes. If a conferencing endpoint type detects a change in a conference nodes state, as would be returned by GetConferenceStatus() then this function will be called on all endpoints in the OpalManager.

The uri parameter is as is the internal URI for the conference.

Parameters:
uri  < Endpoint sending state change Internal URI of conference node that changed
change  Change that occurred

Reimplemented from OpalEndPoint.

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 bool SIPEndPoint::OnReceivedConnectionlessPDU ( SIP_PDU pdu  )  [virtual]

Handle an incoming SIP PDU not assigned to any connection

virtual bool SIPEndPoint::OnReceivedINVITE ( SIP_PDU pdu  )  [virtual]

Handle an incoming INVITE request.

virtual bool SIPEndPoint::OnReceivedMESSAGE ( SIP_PDU request  )  [virtual]

Handle an incoming MESSAGE PDU.

virtual bool SIPEndPoint::OnReceivedNOTIFY ( SIP_PDU request  )  [virtual]

Handle an incoming NOTIFY PDU.

virtual bool SIPEndPoint::OnReceivedOPTIONS ( SIP_PDU request  )  [virtual]

Handle an incoming OPTIONS PDU.

virtual bool SIPEndPoint::OnReceivedPDU ( SIP_PDU pdu  )  [virtual]

Handle an incoming SIP PDU that has been full decoded

virtual bool SIPEndPoint::OnReceivedREGISTER ( SIP_PDU request  )  [virtual]

Handle an incoming REGISTER PDU.

virtual void SIPEndPoint::OnReceivedResponse ( SIPTransaction transaction,
SIP_PDU response 
) [virtual]

Handle an incoming response PDU.

virtual bool SIPEndPoint::OnReceivedSUBSCRIBE ( SIP_PDU request,
SIPDialogContext dialog 
) [virtual]

Handle an incoming SUBSCRIBE PDU.

virtual void SIPEndPoint::OnRegInfoReceived ( const SIPRegNotification info  )  [virtual]

Callback called when reg NOTIFY message is received

Parameters:
info  Information on dialog state change

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 PString &  aor,
PBoolean  wasRegistering,
PBoolean  reRegistering,
SIP_PDU::StatusCodes  reason 
) [virtual]

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::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::OnStartTransaction ( SIPConnection conn,
SIPTransaction transaction 
) [virtual]

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::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 ( const SubscriptionStatus status  )  [virtual]

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

Parameters:
status  Status of subscription request

virtual void SIPEndPoint::OnTransactionFailed ( SIPTransaction transaction  )  [virtual]

Handle a SIP packet transaction failure

SIPEndPoint::P_REMOVE_VIRTUAL ( bool  ,
OnReceivedOPTIONS(OpalTransport &, SIP_PDU &)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( bool  ,
OnReceivedMESSAGE(OpalTransport &, SIP_PDU &)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( PBoolean  ,
OnReceivedSUBSCRIBE(OpalTransport &, SIP_PDU &, SIPDialogContext *)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( PBoolean  ,
OnReceivedREGISTER(OpalTransport &, SIP_PDU &)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( PBoolean  ,
OnReceivedNOTIFY(OpalTransport &, SIP_PDU &)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( PBoolean  ,
OnReceivedINVITE(OpalTransport &, SIP_PDU *)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( bool  ,
OnReceivedConnectionlessPDU(OpalTransport &, SIP_PDU *)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( PBoolean  ,
OnReceivedPDU(OpalTransport &, SIP_PDU *)  ,
false   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL ( SIPConnection ,
CreateConnection(OpalCall &, const PString &, void *, const SIPURL &, OpalTransport *, SIP_PDU *, unsigned, OpalConnection::StringOptions *)  ,
NULL   
) [protected]

SIPEndPoint::P_REMOVE_VIRTUAL_VOID ( OnMessageFailed(const SIPURL &, SIP_PDU::StatusCodes  )  [protected]

SIPEndPoint::P_REMOVE_VIRTUAL_VOID ( OnReceivedOK(SIPTransaction &, SIP_PDU &)   )  [protected]

SIPEndPoint::P_REMOVE_VIRTUAL_VOID ( OnReceivedAuthenticationRequired(SIPTransaction &, SIP_PDU &)   )  [protected]

SIPEndPoint::P_REMOVE_VIRTUAL_VOID ( OnReceivedIntervalTooBrief(SIPTransaction &, SIP_PDU &)   )  [protected]

SIPEndPoint::PDECLARE_InterfaceNotifier ( SIPEndPoint  ,
OnLowPriorityInterfaceChange   
) [protected]

SIPEndPoint::PDECLARE_InterfaceNotifier ( SIPEndPoint  ,
OnHighPriorityInterfaceChange   
) [protected]

PBoolean SIPEndPoint::Ping ( const PURL &  to  ) 

Send a SIP PING to the remote host

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::Publish ( const SIPSubscribe::Params params,
const PString &  body,
PString &  aor 
)

Publish new state information. An empty body, or expire time of zero, will cease to automatically update the publish.

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::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 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::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]

void SIPEndPoint::SetConnectionlessMessageNotifier ( const ConnectionlessMessageNotifier notifier  )  [inline]

void SIPEndPoint::SetDefaultAppearanceCode ( int  code  )  [inline]

Set the default line appearance code for new connections.

void SIPEndPoint::SetDefaultPRACKMode ( SIPConnection::PRACKMode  mode  )  [inline]

Set default mode for PRACK support.

void SIPEndPoint::SetInviteTimeout ( const PTimeInterval &  t  )  [inline]

void SIPEndPoint::SetKeepAlive ( const PTimeInterval &  timeout,
KeepAliveType  type 
) [inline]

void SIPEndPoint::SetMaxPacketSizeUDP ( PINDEX  sz  )  [inline]

void SIPEndPoint::SetMaxRetries ( unsigned  r  )  [inline]

P_DEPRECATED void SIPEndPoint::SetNATBindingRefreshMethod ( const NATBindingRefreshMethod  type  )  [inline]

P_DEPRECATED void SIPEndPoint::SetNATBindingTimeout ( const PTimeInterval &  t  )  [inline]

void SIPEndPoint::SetNonInviteTimeout ( const PTimeInterval &  t  )  [inline]

void SIPEndPoint::SetNotifierTimeToLive ( const PTimeInterval &  t  )  [inline]

void SIPEndPoint::SetPduCleanUpTimeout ( const PTimeInterval &  t  )  [inline]

void SIPEndPoint::SetProgressTimeout ( const PTimeInterval &  t  )  [inline]

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

Set the outbound proxy URL.

void SIPEndPoint::SetProxy ( const SIPURL url  ) 

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.

void SIPEndPoint::SetRegistrarTimeToLive ( const PTimeInterval &  t  )  [inline]

void SIPEndPoint::SetRetryTimeouts ( const PTimeInterval &  t1,
const PTimeInterval &  t2 
) [inline]

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.

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 ( 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::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

void SIPEndPoint::TransportThreadMain ( OpalTransportPtr  transport  )  [protected]

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 ( const PString &  eventPackage  ) 

Parameters:
eventPackage  Event package being unsubscribed

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::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

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 &  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

void SIPEndPoint::UpdateHandlerIndexes ( SIPHandler handler  )  [inline]


Field Documentation

PTimeInterval SIPEndPoint::ackTimeout [protected]

SIPHandlersList SIPEndPoint::activeSIPHandlers [protected]

PTimeInterval SIPEndPoint::inviteTimeout [protected]

PStringSet SIPEndPoint::m_allowedEvents [protected]

ConferenceMap SIPEndPoint::m_conferenceAOR [protected]

int SIPEndPoint::m_defaultAppearanceCode [protected]

SIPConnection::PRACKMode SIPEndPoint::m_defaultPrackMode [protected]

bool SIPEndPoint::m_disableTrying [protected]

PTimeInterval SIPEndPoint::m_keepAliveTimeout [protected]

KeepAliveType SIPEndPoint::m_keepAliveType [protected]

PAtomicInteger SIPEndPoint::m_lastSentCSeq [protected]

PINDEX SIPEndPoint::m_maxPacketSizeUDP [protected]

ConnectionlessMessageNotifier SIPEndPoint::m_onConnectionlessMessage [protected]

PTimeInterval SIPEndPoint::m_progressTimeout [protected]

SIPURL SIPEndPoint::m_proxy [protected]

PMutex SIPEndPoint::m_receivedConnectionMutex [protected]

PStringToString SIPEndPoint::m_receivedConnectionTokens [protected]

bool SIPEndPoint::m_registeredUserMode [protected]

std::map<PString, RegistrationCompletion> SIPEndPoint::m_registrationComplete [protected]

bool SIPEndPoint::m_shuttingDown [protected]

SIPThreadPool SIPEndPoint::m_threadPool [protected]

PSafeSortedList<SIPTransactionBase> SIPEndPoint::m_transactions [protected]

PSafeDictionary<OpalTransportAddress, OpalTransport> SIPEndPoint::m_transportsTable [protected]

PString SIPEndPoint::m_userAgentString [protected]

unsigned SIPEndPoint::maxRetries [protected]

PTimeInterval SIPEndPoint::natBindingTimeout [protected]

PTimeInterval SIPEndPoint::nonInviteTimeout [protected]

PTimeInterval SIPEndPoint::notifierTimeToLive [protected]

PTimeInterval SIPEndPoint::pduCleanUpTimeout [protected]

PTimeInterval SIPEndPoint::registrarTimeToLive [protected]

PTimeInterval SIPEndPoint::retryTimeoutMax [protected]

PTimeInterval SIPEndPoint::retryTimeoutMin [protected]


The documentation for this class was generated from the following file:
Generated on 21 Jun 2013 for OPAL by  doxygen 1.4.7