28 #ifndef OPAL_SIP_SIPEP_H
29 #define OPAL_SIP_SIPEP_H
62 unsigned maxThreads = 15
133 const PString & party,
135 unsigned int options,
199 const PString & remoteParty,
200 const PString & replaces
208 const PString & forwardParty
222 const PString & descriptor
325 const PString & token,
326 PSafetyMode mode = PSafeReadWrite,
382 const PString & host,
383 const PString & user = PString::Empty(),
384 const PString & autName = PString::Empty(),
385 const PString & password = PString::Empty(),
386 const PString & authRealm = PString::Empty(),
388 const PTimeInterval & minRetryTime = PMaxTimeInterval,
389 const PTimeInterval & maxRetryTime = PMaxTimeInterval
408 bool includeOffline =
false
436 bool includeOffline =
false
455 const PString & token,
468 PBoolean wasRegistering,
469 PBoolean reRegistering,
479 PBoolean wasRegistering
487 PBoolean wasRegistering
533 bool tokenIsAOR =
true
551 bool includeOffline =
false
554 const PString & eventPackage,
556 bool includeOffline =
false
570 bool invalidateNotifiers =
false
575 bool invalidateNotifiers =
false
578 const PString & eventPackage,
580 bool invalidateNotifiers =
false
590 const PString & eventPackage
603 bool includeOffline =
false
613 const PString & token,
614 const PString & eventPackage,
628 const PString & eventPackage,
659 const PString & eventPackage,
664 virtual bool CanNotify(
const PString & eventPackage);
669 const SIPURL & targetAddress,
670 const PString & eventPackage,
682 const PString & remoteSDP
708 const PString & package,
709 const PMultiPartList & content
744 #define PDECLARE_ConnectionlessMessageNotifier(cls, fn) PDECLARE_NOTIFIER2(SIPEndPoint, cls, fn, SIPEndPoint::ConnectionlessMessageInfo &)
745 #define PCREATE_ConnectionlessMessageNotifier(fn) PCREATE_NOTIFIER2(fn, SIPEndPoint::ConnectionlessMessageInfo &)
773 const PString & body,
778 const PString & body,
779 unsigned expire = 300
786 bool includeOffline =
false
790 #if OPAL_SIP_PRESENCE
794 bool PublishPresence(
795 const SIPPresenceInfo & info,
796 unsigned expire = 300
801 virtual void OnPresenceInfoReceived (
802 const SIPPresenceInfo & info
804 virtual void OnPresenceInfoReceived (
805 const PString & identity,
806 const PString & basic,
809 #endif // OPAL_SIP_PRESENCE
825 virtual Comparison
Compare(
const PObject & obj)
const;
826 virtual void PrintOn(ostream & strm)
const;
879 const PTimeInterval & t1,
880 const PTimeInterval & t2
886 const PTimeInterval & t
891 const PTimeInterval & t
896 const PTimeInterval & t
901 const PTimeInterval & t
906 const PTimeInterval & t
911 const PTimeInterval & t
916 const PTimeInterval & t
921 const PTimeInterval & t
934 PTimeInterval & timeout,
938 const PTimeInterval & timeout,
947 PSafePtr<SIPTransaction>
GetTransaction(
const PString & transactionID, PSafetyMode mode)
948 {
return PSafePtrCast<SIPTransactionBase, SIPTransaction>(
m_activeTransactions.Find(transactionID, mode)); }
965 const PString & realm,
1000 const PString & hostname,
1001 const PString & username,
1002 const PString & password
1150 #endif // OPAL_SIP_SIPEP_H
PTimeInterval m_retryTimeoutMax
Definition: sipep.h:1074
const PString & GetTransactionID() const
Definition: sippdu.h:699
Definition: sippdu.h:1328
void SetAckTimeout(const PTimeInterval &t)
Definition: sipep.h:905
PInterfaceMonitor::Notifier m_onLowPriorityInterfaceChange
Definition: sipep.h:1126
friend ostream & operator<<(ostream &strm, const RegistrationStatus &status)
P_DEPRECATED void SetNATBindingRefreshMethod(const NATBindingRefreshMethod type)
Definition: sipep.h:1033
Definition: manager.h:150
PSafePtr< SIPHandler > FindSIPHandlerByUrl(const PString &url, SIP_PDU::Methods meth, PSafetyMode m)
void GetKeepAlive(PTimeInterval &timeout, KeepAliveType &type)
Definition: sipep.h:933
void SetKeepAlive(const PTimeInterval &timeout, KeepAliveType type)
Definition: sipep.h:937
virtual void OnStartTransaction(SIPConnection &conn, SIPTransaction &transaction)
unsigned GetRegistrationsCount() const
Definition: sipep.h:431
virtual void OnDialogInfoReceived(const SIPDialogNotification &info)
PString m_userAgentString
Definition: sipep.h:1066
Definition: endpoint.h:65
bool m_wasRegistering
Was registering or unregistering.
Definition: sipep.h:443
virtual PBoolean IsAcceptedAddress(const SIPURL &toAddr)
void SetProxy(const SIPURL &url)
PRACKMode
Mode for reliable provisional responses.
Definition: sipcon.h:633
void SetDefaultPRACKMode(SIPConnection::PRACKMode mode)
Definition: sipep.h:870
const PStringSet & GetRegistrarDomains() const
Definition: sipep.h:858
void SetDefaultAppearanceCode(int code)
Definition: sipep.h:1012
virtual void OnSubscriptionStatus(const SubscriptionStatus &status)
friend class RegistrarAoR
Definition: sipep.h:850
Definition: handlers.h:440
virtual bool OnReINVITE(SIPConnection &connection, bool fromRemote, const PString &remoteSDP)
void SetMaxPacketSizeUDP(PINDEX sz)
Definition: sipep.h:872
PredefinedPackages
Definition: sippdu.h:1309
const SIPURL & GetProxy() const
Definition: sipep.h:991
virtual bool OnReceivedINVITE(SIP_PDU *pdu)
Definition: sippdu.h:1056
int GetDefaultAppearanceCode() const
Definition: sipep.h:1008
SIPSubscribe::SubscriptionStatus SubscriptionStatus
Definition: sipep.h:607
void SetRegistrarDomains(const PStringSet &domains)
Definition: sipep.h:857
void SetRegisteredUserMode(bool v)
Definition: sipep.h:959
SRVIndexMap m_SRVIndex
Definition: sipep.h:1062
PNotifierTemplate< ConnectionlessMessageInfo & > ConnectionlessMessageNotifier
Definition: sipep.h:743
PTimeInterval m_keepAliveTimeout
Definition: sipep.h:1082
ConnectionlessMessageInfo(SIP_PDU &pdu)
Definition: sipep.h:727
Definition: sippdu.h:1548
unsigned GetNextCSeq()
Definition: sipep.h:952
virtual void OnReceivedResponse(SIPTransaction &transaction, SIP_PDU &response)
void SetNonInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:885
PBoolean IsRegistered(const PString &aor, bool includeOffline=false)
virtual SIPConnection * CreateConnection(const SIPConnection::Init &init)
bool m_registeredUserMode
Definition: sipep.h:1084
virtual PString GetUserAgent() const
virtual bool OnReceivedPDU(SIP_PDU *pdu)
SIPHandlers m_activeSIPHandlers
Definition: sipep.h:1092
OpalTransportAddress NextSRVAddress(const SIPURL &url)
PString m_addressofRecord
Address of record for registration.
Definition: sipep.h:442
PTimeInterval m_inviteTimeout
Definition: sipep.h:1077
PTimeInterval m_retryTimeoutMin
Definition: sipep.h:1073
Definition: transports.h:788
PStringSet m_registrarDomains
Definition: sipep.h:1117
Definition: sippdu.h:1388
PSafePtr< SIPHandler > FindSIPHandlerByCallID(const PString &callID, PSafetyMode m)
RegistrarDict m_registeredUAs
Definition: sipep.h:1116
bool GetAuthentication(const PString &realm, PString &authId, PString &password)
SIPConnection::PRACKMode GetDefaultPRACKMode() const
Definition: sipep.h:866
Definition: handlers.h:325
const PTimeInterval & GetPduCleanUpTimeout() const
Definition: sipep.h:893
virtual PString GetDefaultTransport() const
enum SIPEndPoint::ConnectionlessMessageInfo::@42 m_status
virtual bool OnReceivedNOTIFY(SIP_PDU &request)
PSafeDictionary< OpalTransportAddress, OpalTransport > m_transportsTable
Definition: sipep.h:1088
SIP_PDU::StatusCodes m_reason
Definition: sipep.h:1105
StatusCodes
Definition: sippdu.h:544
virtual void OnRegistrationFailed(const PString &aor, SIP_PDU::StatusCodes reason, PBoolean wasRegistering)
virtual SIPURLList GetRegistrarAoRs() const
SIPRegisterHandler * m_handler
Handler for registration.
Definition: sipep.h:441
PStringList GetSubscriptions(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:601
SIP_PDU::StatusCodes InternalHandleREGISTER(SIP_PDU &request, SIP_PDU *response)
SIPEndPoint(OpalManager &manager, unsigned maxThreads=15)
virtual void OnRegistered(const PString &aor, PBoolean wasRegistering)
CanNotifyResult
Definition: sipep.h:650
void AddTransaction(SIPTransaction *transaction)
Definition: sipep.h:943
const PTimeInterval & GetNonInviteTimeout() const
Definition: sipep.h:888
virtual WORD GetDefaultSignalPort() const
BindingMap m_bindings
Definition: sipep.h:846
bool ClearDialogContext(const PString &descriptor)
void TransportThreadMain(OpalTransportPtr transport)
PTimeInterval m_notifierTimeToLive
Definition: sipep.h:1081
P_DEPRECATED void SetNATBindingTimeout(const PTimeInterval &t)
Definition: sipep.h:920
const OpalProductInfo & GetProductInfo() const
Definition: sipep.h:833
OpalTransport & m_transport
Definition: sipep.h:734
std::multimap< PString, SIPURL > ConferenceMap
Definition: sipep.h:1111
Definition: transports.h:411
void SetInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:895
virtual void OnOptionsCompleted(const SIPOptions::Params ¶ms, const SIP_PDU &response)
virtual SIP_PDU::StatusCodes OnReceivedREGISTER(SIPEndPoint &endpoint, const SIP_PDU &request)
PTimeInterval m_progressTimeout
Definition: sipep.h:1078
RegistrationCompletion()
Definition: sipep.h:1106
const PTimeInterval & GetInviteTimeout() const
Definition: sipep.h:898
PBoolean Ping(const PURL &to)
void * m_userData
User data corresponding to this registration.
Definition: sipep.h:447
const PTimeInterval & GetAckTimeout() const
Definition: sipep.h:908
PTimeInterval m_nonInviteTimeout
Definition: sipep.h:1075
RegistrarAoR(const PURL &aor)
std::map< PCaselessString, PINDEX > SRVIndexMap
Definition: sipep.h:1061
PTimeInterval m_ackTimeout
Definition: sipep.h:1079
const SIPURL & GetAoR() const
Definition: sipep.h:831
virtual bool OnReceivedREFER(SIP_PDU &request)
KeepAliveType m_keepAliveType
Definition: sipep.h:1083
PSafeDictionary< SIPURL, RegistrarAoR > RegistrarDict
Definition: sipep.h:1115
void SetRegistrarTimeToLive(const PTimeInterval &t)
Definition: sipep.h:910
std::map< SIPURL, Binding > BindingMap
Definition: sipep.h:845
PString m_id
Definition: sipep.h:842
SIPConnection::PRACKMode m_defaultPrackMode
Definition: sipep.h:1069
virtual void PrintOn(ostream &strm) const
Refuse SUBSCRIBE.
Definition: sipep.h:651
Definition: connection.h:530
unsigned GetMaxRetries() const
Definition: sipep.h:876
Definition: sippdu.h:1593
virtual void OnRegistrationStatus(const RegistrationStatus &status)
virtual PBoolean ForwardConnection(SIPConnection &connection, const PString &forwardParty)
void SendNotifyDialogInfo(const SIPDialogNotification &info)
PStringToString m_receivedConnectionTokens
Definition: sipep.h:1095
P_REMOVE_VIRTUAL(SIPConnection *, CreateConnection(OpalCall &, const PString &, void *, const SIPURL &, OpalTransport *, SIP_PDU *, unsigned, OpalConnection::StringOptions *), NULL)
bool GetSubscriptionStatus(const PString &token, const PString &eventPackage, SubscriptionStatus &status)
PINDEX GetMaxPacketSizeUDP() const
Definition: sipep.h:873
virtual bool OnReceivedInfoPackage(SIPConnection &connection, const PString &package, const PMultiPartList &content)
virtual PSafePtr< OpalConnection > MakeConnection(OpalCall &call, const PString &party, void *userData, unsigned int options, OpalConnection::StringOptions *stringOptions)
PStringList GetPublications(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:784
PDECLARE_MUTEX(m_SRVIndexMutex)
Definition: handlers.h:49
PStringSet m_allowedEvents
Definition: sipep.h:1067
virtual SIPURL GetDefaultLocalURL(const OpalTransport &transport, const SIPURL &remoteAddress)
void AddTransport(const OpalTransportPtr &transport, KeepAliveType keepAliveType)
virtual void HandlePDU(const OpalTransportPtr &transport)
unsigned m_maxRetries
Definition: sipep.h:1072
SIPURL m_aor
Definition: sipep.h:838
OpalProductInfo m_productInfo
Server product info from registrar if available.
Definition: sipep.h:446
PTime m_lastUpdate
Definition: sipep.h:843
const PStringSet & GetAllowedEvents() const
Definition: sipep.h:862
KeepAliveType NATBindingRefreshMethod
Definition: sipep.h:1032
virtual bool ExpireBindings()
ConferenceMap m_conferenceAOR
Definition: sipep.h:1112
PInterfaceMonitor::Notifier m_onHighPriorityInterfaceChange
Definition: sipep.h:1125
SIP_PDU::StatusCodes m_reason
Reason for status change.
Definition: sipep.h:445
SIPURLList GetContacts() const
virtual void NewIncomingConnection(OpalListener &listener, const OpalTransportPtr &transport)
virtual bool OnReceivedMESSAGE(SIP_PDU &request)
virtual void OnReleased(OpalConnection &connection)
bool m_reRegistering
Was a registration refresh.
Definition: sipep.h:444
bool SendMESSAGE(SIPMessage::Params ¶ms)
Definition: sippdu.h:1349
Accept SUBSCRIBE, but NOTIFY will be sent at a later time by caller
Definition: sipep.h:653
virtual PBoolean SetupTransfer(SIPConnection &connection, const PString &remoteParty, const PString &replaces)
void UpdateHandlerIndexes(SIPHandler *handler)
Definition: sipep.h:1046
PINDEX GetSRVIndex(const SIPURL &url)
PStringList GetRegistrations(bool includeOffline=false) const
Definition: sipep.h:435
void SetProgressTimeout(const PTimeInterval &t)
Definition: sipep.h:900
PSafePtr< SIPHandler > FindHandlerByPDU(const SIP_PDU &pdu, PSafetyMode mode)
ConnectionlessMessageNotifier m_onConnectionlessMessage
Definition: sipep.h:1110
virtual void OnConferenceStatusChanged(OpalEndPoint &endpoint, const PString &uri, OpalConferenceState::ChangeType change)
PSafePtr< SIPConnection > GetSIPConnectionWithLock(const PString &token, PSafetyMode mode=PSafeReadWrite, SIP_PDU::StatusCodes *errorCode=NULL)
void SetMaxRetries(unsigned r)
Definition: sipep.h:875
virtual void OnTransactionFailed(SIPTransaction &transaction)
ChangeType
Definition: manager.h:76
virtual PStringList GetAvailableStringOptions() const
bool IsSubscribed(const PString &aor, bool includeOffline=false)
virtual void OnChangedRegistrarAoR(RegistrarAoR &ua)
bool Unregister(const PString &aor)
int m_defaultAppearanceCode
Definition: sipep.h:1101
PSafePtr< OpalTransport > OpalTransportPtr
Definition: transports.h:50
bool Register(const SIPRegister::Params ¶ms, PString &aor, SIP_PDU::StatusCodes *reason=NULL)
Definition: handlers.h:205
void SetNotifierTimeToLive(const PTimeInterval &t)
Definition: sipep.h:915
SIPThreadPool m_threadPool
Definition: sipep.h:1120
Registrar parameters.
Definition: sippdu.h:1260
void Update(SIPHandler *handler)
OpalTransportPtr GetTransport(const SIPTransactionOwner &transactor, SIP_PDU::StatusCodes &reason)
SIP_PDU & m_pdu
Definition: sipep.h:733
const PTimeInterval & GetRegistrarTimeToLive() const
Definition: sipep.h:913
virtual void OnMESSAGECompleted(const SIPMessage::Params ¶ms, SIP_PDU::StatusCodes reason)
PDECLARE_InterfaceNotifier(SIPEndPoint, OnHighPriorityInterfaceChange)
P_REMOVE_VIRTUAL_VOID(OnReceivedIntervalTooBrief(SIPTransaction &, SIP_PDU &))
bool HasBindings() const
Definition: sipep.h:835
virtual void AdjustToRegistration(SIP_PDU &pdu, SIPConnection *connection=NULL, const OpalTransport *transport=NULL)
bool GetRegistrationStatus(const PString &token, RegistrationStatus &status)
void SetUserAgent(const PString &str)
Definition: sipep.h:1024
PTimeInterval m_pduCleanUpTimeout
Definition: sipep.h:1076
Methods
Definition: sippdu.h:526
Definition: connection.h:415
void ResetSRVIndex(const SIPURL &url)
bool UnsubcribeAll(SIPSubscribe::PredefinedPackages eventPackage)
virtual void OnRegInfoReceived(const SIPRegNotification &info)
virtual unsigned GetAllowedMethods() const
KeepAliveType
Definition: sipep.h:927
Definition: handlers.h:171
const PTimeInterval & GetNotifierTimeToLive() const
Definition: sipep.h:918
PTimeInterval m_registrarTimeToLive
Definition: sipep.h:1080
const PTimeInterval & GetRetryTimeoutMax() const
Definition: sipep.h:883
virtual bool OnReceivedOPTIONS(SIP_PDU &request)
PStringList GetAddresses(bool includeOffline, SIP_PDU::Methods meth, const PString &eventPackage=PString::Empty()) const
bool m_disableTrying
Definition: sipep.h:1128
bool Publish(const SIPSubscribe::Params ¶ms, const PString &body, PString &aor)
void SetPduCleanUpTimeout(const PTimeInterval &t)
Definition: sipep.h:890
virtual CanNotifyResult CanNotify(const PString &eventPackage, const SIPURL &aor)
SIPThreadPool & GetThreadPool()
Definition: sipep.h:1050
OpalProductInfo m_productInfo
Definition: sipep.h:839
atomic< unsigned > m_lastSentCSeq
Definition: sipep.h:1100
Definition: transports.h:151
bool Notify(const SIPURL &targetAddress, const PString &eventPackage, const PObject &body)
virtual Comparison Compare(const PObject &obj) const
void SetRetryTimeouts(const PTimeInterval &t1, const PTimeInterval &t2)
Definition: sipep.h:878
bool GetRegisteredUserMode() const
Definition: sipep.h:960
PINDEX m_maxPacketSizeUDP
Definition: sipep.h:1071
virtual RegistrarAoR * CreateRegistrarAoR(const SIP_PDU &request)
Definition: handlers.h:499
std::map< PString, unsigned > m_cseq
Definition: sipep.h:848
virtual PBoolean GarbageCollection()
virtual bool OnReceivedREGISTER(SIP_PDU &request)
PSafePtr< SIPTransaction > GetTransaction(const PString &transactionID, PSafetyMode mode)
Definition: sipep.h:947
SIPURL m_proxy
Definition: sipep.h:1065
virtual SIPRegisterHandler * CreateRegisterHandler(const SIPRegister::Params ¶ms)
bool Subscribe(const SIPSubscribe::Params ¶ms, PString &token, bool tokenIsAOR=true)
PSafeDictionary< PString, SIPTransactionBase > m_activeTransactions
Definition: sipep.h:1098
unsigned GetCount(SIP_PDU::Methods meth, const PString &eventPackage=PString::Empty()) const
bool m_shuttingDown
Definition: sipep.h:1085
Accept SUBSCRIBE and send NOTIFY.
Definition: sipep.h:652
PDECLARE_INSTRUMENTED_MUTEX(m_transportsMutex, SIPTransport, 2000, 1000)
virtual PStringList GetNetworkURIs(const PString &name) const
virtual PSafePtr< RegistrarAoR > FindRegistrarAoR(const SIPURL &aor)
Definition: sipep.h:853
PSafePtr< SIPHandler > FindSIPHandlerByUrl(const PString &aor, SIP_PDU::Methods method, PSafetyMode mode)
Definition: sipep.h:1043
virtual bool OnReceivedSUBSCRIBE(SIP_PDU &request, SIPDialogContext *dialog)
P_DEPRECATED const PTimeInterval & GetNATBindingTimeout() const
Definition: sipep.h:923
bool Unsubscribe(const PString &aor, bool invalidateNotifiers=false)
unsigned GetSubscriptionCount(const SIPSubscribe::EventPackage &eventPackage)
Definition: sipep.h:595
const PTimeInterval & GetRetryTimeoutMin() const
Definition: sipep.h:882
Definition: connection.h:358
virtual bool SendOPTIONS(const SIPOptions::Params ¶ms)
PSyncPoint m_sync
Definition: sipep.h:1104
PSafePtr< SIPHandler > FindSIPHandlerByCallID(const PString &callID, PSafetyMode m)
Definition: sipep.h:1040
std::map< PString, RegistrationCompletion > m_registrationComplete
Definition: sipep.h:1108
const PTimeInterval & GetProgressTimeout() const
Definition: sipep.h:903
void SetConnectionlessMessageNotifier(const ConnectionlessMessageNotifier ¬ifier)
Definition: sipep.h:747