32 #ifndef OPAL_SIP_SIPEP_H
33 #define OPAL_SIP_SIPEP_H
47 #include <ptclib/threadpool.h>
63 #define OPAL_HAS_SIP_PRESENCE 1
97 unsigned maxConnectionThreads = 10,
98 unsigned maxHandlerThreads = 5
158 const PString & party,
160 unsigned int options,
200 const PString & token,
202 const SIPURL & destination,
205 unsigned int options = 0,
213 const PString & token,
214 const PString & callIdentity,
215 const PString & remoteParty,
216 void * userData = NULL
224 const PString & forwardParty
238 const PString & descriptor
253 const PString & localInterface = PString::Empty()
351 const PString & token,
352 PSafetyMode mode = PSafeReadWrite,
408 const PString & host,
409 const PString & user = PString::Empty(),
410 const PString & autName = PString::Empty(),
411 const PString & password = PString::Empty(),
412 const PString & authRealm = PString::Empty(),
414 const PTimeInterval & minRetryTime = PMaxTimeInterval,
415 const PTimeInterval & maxRetryTime = PMaxTimeInterval
434 bool includeOffline =
false
462 bool includeOffline =
false
485 PBoolean wasRegistering,
486 PBoolean reRegistering,
496 PBoolean wasRegistering
504 PBoolean wasRegistering
550 bool tokenIsAOR =
true
568 bool includeOffline =
false
571 const PString & eventPackage,
573 bool includeOffline =
false
587 bool invalidateNotifiers =
false
592 bool invalidateNotifiers =
false
595 const PString & eventPackage,
597 bool invalidateNotifiers =
false
607 const PString & eventPackage
620 bool includeOffline =
false
629 const SubscriptionStatus & status
636 const PString & eventPackage,
654 const PString & eventPackage
660 const SIPURL & targetAddress,
661 const PString & eventPackage,
712 #define PDECLARE_ConnectionlessMessageNotifier(cls, fn) PDECLARE_NOTIFIER2(SIPEndPoint, cls, fn, SIPEndPoint::ConnectionlessMessageInfo &)
713 #define PCREATE_ConnectionlessMessageNotifier(fn) PCREATE_NOTIFIER2(fn, SIPEndPoint::ConnectionlessMessageInfo &)
716 const ConnectionlessMessageNotifier & notifier
741 const PString & body,
746 const PString & body,
747 unsigned expire = 300
754 bool includeOffline =
false
763 unsigned expire = 300
772 const PString & identity,
773 const PString & basic,
799 const PTimeInterval & t1,
800 const PTimeInterval & t2
806 const PTimeInterval & t
811 const PTimeInterval & t
816 const PTimeInterval & t
821 const PTimeInterval & t
826 const PTimeInterval & t
831 const PTimeInterval & t
836 const PTimeInterval & t
841 const PTimeInterval & t
849 PSafePtr<SIPTransaction>
GetTransaction(
const PString & transactionID, PSafetyMode mode = PSafeReadWrite)
850 {
return transactions.FindWithLock(transactionID, mode); }
868 unsigned & authenticateErrors,
870 const SIPURL & proxyOverride,
871 const PString & username,
872 const PString & password
917 const PString & userName = PString::Empty()
934 const PString & hostname,
935 const PString & username,
936 const PString & password
1036 virtual void Work();
1047 : PQueuedThreadPool<
SIP_Work>(maxWorkers)
1064 virtual void OnAddInterface(
const PIPSocket::InterfaceEntry & entry);
1087 #endif // OPAL_SIP_SIPEP_H
PTimeInterval inviteTimeout
Definition: sipep.h:1001
Definition: sippdu.h:1118
void SetAckTimeout(const PTimeInterval &t)
Definition: sipep.h:825
PTimer natBindingTimer
Definition: sipep.h:1015
PTimeInterval retryTimeoutMin
Definition: sipep.h:997
PTimeInterval notifierTimeToLive
Definition: sipep.h:1005
virtual void OnStartTransaction(SIPConnection &conn, SIPTransaction &transaction)
unsigned GetRegistrationsCount() const
Definition: sipep.h:457
virtual void OnDialogInfoReceived(const SIPDialogNotification &info)
bool m_wasRegistering
Was registering or unregistering.
Definition: sipep.h:469
bool GetRegisteredYserMode() const
Definition: sipep.h:862
PDECLARE_NOTIFIER(PThread, SIPEndPoint, TransportThreadMain)
void AdjustToRegistration(SIP_PDU &pdu, const OpalTransport &transport, const SIPConnection *connection)
virtual PBoolean IsAcceptedAddress(const SIPURL &toAddr)
void SetProxy(const SIPURL &url)
PRACKMode
Mode for reliable provisional responses.
Definition: sipcon.h:570
void SetDefaultPRACKMode(SIPConnection::PRACKMode mode)
Definition: sipep.h:790
void SetDefaultAppearanceCode(int code)
Definition: sipep.h:946
virtual void OnSubscriptionStatus(const SubscriptionStatus &status)
PTimeInterval registrarTimeToLive
Definition: sipep.h:1004
Definition: handlers.h:495
PredefinedPackages
Definition: sippdu.h:1101
const SIPURL & GetProxy() const
Definition: sipep.h:923
int GetDefaultAppearanceCode() const
Definition: sipep.h:942
SIPSubscribe::SubscriptionStatus SubscriptionStatus
Definition: sipep.h:624
virtual bool OnReceivedMESSAGE(OpalTransport &transport, SIP_PDU &response)
void SetRegisteredUserMode(bool v)
Definition: sipep.h:861
PNotifierTemplate< ConnectionlessMessageInfo & > ConnectionlessMessageNotifier
Definition: sipep.h:711
Definition: sippdu.h:1314
SIPEndPoint::WorkThreadPool m_handlerThreadPool
unsigned GetNextCSeq()
Definition: sipep.h:854
virtual void OnReceivedResponse(SIPTransaction &transaction, SIP_PDU &response)
void SetNonInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:805
PBoolean IsRegistered(const PString &aor, bool includeOffline=false)
PTimeInterval natBindingTimeout
Definition: sipep.h:1006
SIPHandlersList activeSIPHandlers
Definition: sipep.h:1010
bool m_registeredUserMode
Definition: sipep.h:1007
virtual PString GetUserAgent() const
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)
unsigned GetCount(SIP_PDU::Methods meth, const PString &eventPackage=PString::Empty()) const
PString m_addressofRecord
Address of record for registration.
Definition: sipep.h:468
virtual void OnPresenceInfoReceived(const SIPPresenceInfo &info)
virtual bool CanNotify(const PString &eventPackage)
Definition: transports.h:703
Definition: sippdu.h:1169
SIPConnection::PRACKMode GetDefaultPRACKMode() const
Definition: sipep.h:786
PSafeDictionary< PString, SIPTransaction > transactions
Definition: sipep.h:1013
const PTimeInterval & GetPduCleanUpTimeout() const
Definition: sipep.h:813
void Update(SIPHandler *handler)
virtual PString GetDefaultTransport() const
enum SIPEndPoint::ConnectionlessMessageInfo::@42 m_status
SIP_PDU * m_pdu
Definition: sipep.h:1039
SIP_PDU::StatusCodes m_reason
Definition: sipep.h:1022
virtual void OnRTPStatistics(const SIPConnection &connection, const RTP_Session &session) const
StatusCodes
Definition: sippdu.h:518
virtual void OnRegistrationFailed(const PString &aor, SIP_PDU::StatusCodes reason, PBoolean wasRegistering)
SIPRegisterHandler * m_handler
Handler for registration.
Definition: sipep.h:467
PStringList GetSubscriptions(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:618
virtual bool OnReceivedOPTIONS(OpalTransport &transport, SIP_PDU &response)
virtual void OnRegistered(const PString &aor, PBoolean wasRegistering)
virtual void HandlePDU(OpalTransport &transport)
const PTimeInterval & GetNATBindingTimeout() const
Definition: sipep.h:843
virtual PBoolean OnReceivedREGISTER(OpalTransport &transport, SIP_PDU &pdu)
void AddTransaction(SIPTransaction *transaction)
Definition: sipep.h:845
const PTimeInterval & GetNonInviteTimeout() const
Definition: sipep.h:808
SIPEndPoint & m_endpoint
Definition: sipep.h:1068
bool ClearDialogContext(const PString &descriptor)
OpalTransport & m_transport
Definition: sipep.h:702
virtual void OnRemoveInterface(const PIPSocket::InterfaceEntry &entry)
virtual PBoolean Message(OpalIM &message)
void SetInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:815
virtual void OnOptionsCompleted(const SIPOptions::Params ¶ms, const SIP_PDU &response)
PTimeInterval m_progressTimeout
Definition: sipep.h:1002
RegistrationCompletion()
Definition: sipep.h:1023
const PTimeInterval & GetInviteTimeout() const
Definition: sipep.h:818
PBoolean Ping(const PURL &to)
void * m_userData
User data corresponding to this registration.
Definition: sipep.h:473
const PTimeInterval & GetAckTimeout() const
Definition: sipep.h:828
virtual SIPURL GetDefaultRegisteredPartyName(const OpalTransport &transport)
virtual bool OnReceivedConnectionlessPDU(OpalTransport &transport, SIP_PDU *pdu)
void SetNATBindingTimeout(const PTimeInterval &t)
Definition: sipep.h:840
void SetRegistrarTimeToLive(const PTimeInterval &t)
Definition: sipep.h:830
SIPConnection::PRACKMode m_defaultPrackMode
Definition: sipep.h:993
SIPAuthInfo()
Definition: sipep.h:73
Definition: handlers.h:366
virtual PBoolean OnReceivedINVITE(OpalTransport &transport, SIP_PDU *pdu)
Definition: connection.h:462
PSafePtr< SIPTransaction > GetTransaction(const PString &transactionID, PSafetyMode mode=PSafeReadWrite)
Definition: sipep.h:849
unsigned GetMaxRetries() const
Definition: sipep.h:796
virtual PBoolean OnReceivedNOTIFY(OpalTransport &transport, SIP_PDU &response)
virtual SIPURL GetRegisteredPartyName(const SIPURL &remoteURL, const OpalTransport &transport)
Definition: sippdu.h:1358
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:1011
virtual PSafePtr< OpalConnection > MakeConnection(OpalCall &call, const PString &party, void *userData, unsigned int options, OpalConnection::StringOptions *stringOptions)
NATBindingRefreshMethod
Definition: sipep.h:968
PStringList GetPublications(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:752
PString m_token
Definition: sipep.h:1040
Definition: handlers.h:54
virtual PBoolean NewIncomingConnection(OpalTransport *transport)
SIPEndPoint(OpalManager &manager, unsigned maxConnectionThreads=10, unsigned maxHandlerThreads=5)
OpalProductInfo m_productInfo
Server product info from registrar if available.
Definition: sipep.h:472
SIPURL proxy
Definition: sipep.h:990
InterfaceMonitor m_lowPriorityMonitor
Definition: sipep.h:1071
virtual SIPURL GetRegisteredProxy(const SIPURL &remoteURL)
SIP_PDU::StatusCodes m_reason
Reason for status change.
Definition: sipep.h:471
virtual void OnReleased(OpalConnection &connection)
void SetMIMEForm(PBoolean v)
Definition: sipep.h:792
bool m_reRegistering
Was a registration refresh.
Definition: sipep.h:470
bool SendMESSAGE(SIPMessage::Params ¶ms)
Definition: sippdu.h:1139
ConnectionlessMessageInfo(OpalTransport &transport, SIP_PDU &pdu)
Definition: sipep.h:697
void UpdateHandlerIndexes(SIPHandler *handler)
Definition: sipep.h:984
PHTTPClientAuthentication SIPAuthentication
Definition: sippdu.h:471
PStringList GetRegistrations(bool includeOffline=false) const
Definition: sipep.h:461
void SetProgressTimeout(const PTimeInterval &t)
Definition: sipep.h:820
PString GetTransactionID() const
SIP_Work(SIPEndPoint &ep, SIP_PDU *pdu, const PString &token)
ConnectionlessMessageNotifier m_onConnectionlessMessage
Definition: sipep.h:1027
OpalTransport * CreateTransport(const SIPURL &remoteURL, const PString &localInterface=PString::Empty())
PSafePtr< SIPConnection > GetSIPConnectionWithLock(const PString &token, PSafetyMode mode=PSafeReadWrite, SIP_PDU::StatusCodes *errorCode=NULL)
void SetMaxRetries(unsigned r)
Definition: sipep.h:795
virtual void OnTransactionFailed(SIPTransaction &transaction)
OpalManager & manager
Definition: endpoint.h:807
unsigned maxRetries
Definition: sipep.h:996
bool IsSubscribed(const PString &aor, bool includeOffline=false)
PTimeInterval ackTimeout
Definition: sipep.h:1003
bool Unregister(const PString &aor)
int m_defaultAppearanceCode
Definition: sipep.h:1018
PBoolean GetMIMEForm() const
Definition: sipep.h:793
PString password
Definition: sipep.h:79
void SetNATBindingRefreshMethod(const NATBindingRefreshMethod m)
Definition: sipep.h:978
SIP_PDU::StatusCodes HandleAuthentication(SIPAuthentication *&authentication, unsigned &authenticateErrors, const SIP_PDU &response, const SIPURL &proxyOverride, const PString &username, const PString &password)
bool mimeForm
Definition: sipep.h:995
SIPAuthInfo(const PString &u, const PString &p)
Definition: sipep.h:76
bool Register(const SIPRegister::Params ¶ms, PString &aor, SIP_PDU::StatusCodes *reason=NULL)
Definition: handlers.h:222
PString username
Definition: sipep.h:78
void SetNotifierTimeToLive(const PTimeInterval &t)
Definition: sipep.h:835
Registrar parameters.
Definition: sippdu.h:1059
PTimeInterval retryTimeoutMax
Definition: sipep.h:998
SIP_PDU & m_pdu
Definition: sipep.h:701
const PTimeInterval & GetRegistrarTimeToLive() const
Definition: sipep.h:833
virtual void OnMESSAGECompleted(const SIPMessage::Params ¶ms, SIP_PDU::StatusCodes reason)
P_REMOVE_VIRTUAL_VOID(OnReceivedIntervalTooBrief(SIPTransaction &, SIP_PDU &))
virtual PBoolean SetupTransfer(const PString &token, const PString &callIdentity, const PString &remoteParty, void *userData=NULL)
void SetUserAgent(const PString &str)
Definition: sipep.h:958
virtual void OnAddInterface(const PIPSocket::InterfaceEntry &entry)
Definition: connection.h:353
bool UnsubcribeAll(SIPSubscribe::PredefinedPackages eventPackage)
PAtomicInteger lastSentCSeq
Definition: sipep.h:1017
WorkThreadPool(unsigned maxWorkers)
Definition: sipep.h:1046
virtual unsigned GetAllowedMethods() const
PTimeInterval pduCleanUpTimeout
Definition: sipep.h:1000
Definition: handlers.h:188
const PTimeInterval & GetNotifierTimeToLive() const
Definition: sipep.h:838
bool PublishPresence(const SIPPresenceInfo &info, unsigned expire=300)
SIPEndPoint::WorkThreadPool m_connectionThreadPool
const PTimeInterval & GetRetryTimeoutMax() const
Definition: sipep.h:803
bool m_disableTrying
Definition: sipep.h:1076
bool Publish(const SIPSubscribe::Params ¶ms, const PString &body, PString &aor)
virtual PBoolean OnReceivedPDU(OpalTransport &transport, SIP_PDU *pdu)
void SetPduCleanUpTimeout(const PTimeInterval &t)
Definition: sipep.h:810
bool Notify(const SIPURL &targetAddress, const PString &eventPackage, const PObject &body)
void SetRetryTimeouts(const PTimeInterval &t1, const PTimeInterval &t2)
Definition: sipep.h:798
Definition: handlers.h:454
PStringList GetAddresses(bool includeOffline, SIP_PDU::Methods meth, const PString &eventPackage=PString::Empty()) const
InterfaceMonitor(SIPEndPoint &manager, PINDEX priority)
virtual PBoolean GarbageCollection()
virtual PBoolean OnReceivedSUBSCRIBE(OpalTransport &transport, SIP_PDU &pdu)
PTimeInterval nonInviteTimeout
Definition: sipep.h:999
InterfaceMonitor m_highPriorityMonitor
Definition: sipep.h:1070
virtual SIPRegisterHandler * CreateRegisterHandler(const SIPRegister::Params ¶ms)
bool Subscribe(const SIPSubscribe::Params ¶ms, PString &token, bool tokenIsAOR=true)
bool m_shuttingDown
Definition: sipep.h:1009
virtual SIPURL GetLocalURL(const OpalTransport &transport, const PString &userName=PString::Empty())
virtual WorkerThreadBase * CreateWorkerThread()
bool Unsubscribe(const PString &aor, bool invalidateNotifiers=false)
NATBindingRefreshMethod natMethod
Definition: sipep.h:1016
PString userAgentString
Definition: sipep.h:991
unsigned GetSubscriptionCount(const SIPSubscribe::EventPackage &eventPackage)
Definition: sipep.h:612
const PTimeInterval & GetRetryTimeoutMin() const
Definition: sipep.h:802
Definition: connection.h:312
virtual bool SendOPTIONS(const SIPOptions::Params ¶ms)
PSyncPoint m_sync
Definition: sipep.h:1021
std::map< PString, RegistrationCompletion > m_registrationComplete
Definition: sipep.h:1025
const PTimeInterval & GetProgressTimeout() const
Definition: sipep.h:823
SIPEndPoint & m_endpoint
Definition: sipep.h:1038
void SetConnectionlessMessageNotifier(const ConnectionlessMessageNotifier ¬ifier)
Definition: sipep.h:715