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
112 virtual void ShutDown();
117 virtual PString GetDefaultTransport()
const;
123 virtual PBoolean NewIncomingConnection(
156 virtual PSafePtr<OpalConnection> MakeConnection(
158 const PString & party,
160 unsigned int options,
182 virtual void OnReleased(
190 virtual PBoolean GarbageCollection();
200 const PString & token,
202 const SIPURL & destination,
205 unsigned int options = 0,
212 virtual PBoolean SetupTransfer(
213 const PString & token,
214 const PString & callIdentity,
215 const PString & remoteParty,
216 void * userData = NULL
222 virtual PBoolean ForwardConnection(
224 const PString & forwardParty
237 bool ClearDialogContext(
238 const PString & descriptor
240 bool ClearDialogContext(
253 const PString & localInterface = PString::Empty()
256 virtual void HandlePDU(
262 virtual PBoolean OnReceivedPDU(
269 virtual bool OnReceivedConnectionlessPDU(
276 virtual void OnReceivedResponse(
283 virtual PBoolean OnReceivedINVITE(
290 virtual PBoolean OnReceivedNOTIFY(
297 virtual PBoolean OnReceivedREGISTER(
304 virtual PBoolean OnReceivedSUBSCRIBE(
311 virtual bool OnReceivedMESSAGE(
318 virtual bool OnReceivedOPTIONS(
325 virtual void OnTransactionFailed(
336 virtual void OnRTPStatistics(
350 PSafePtr<SIPConnection> GetSIPConnectionWithLock(
351 const PString & token,
352 PSafetyMode mode = PSafeReadWrite,
356 virtual PBoolean IsAcceptedAddress(
const SIPURL & toAddr);
407 bool P_DEPRECATED Register(
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
432 PBoolean IsRegistered(
434 bool includeOffline =
false 453 bool UnregisterAll();
462 bool includeOffline =
false 478 virtual void OnRegistrationStatus(
483 virtual void OnRegistrationStatus(
485 PBoolean wasRegistering,
486 PBoolean reRegistering,
493 virtual void OnRegistrationFailed(
496 PBoolean wasRegistering
502 virtual void OnRegistered(
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 628 virtual void OnSubscriptionStatus(
629 const SubscriptionStatus & status
635 virtual void OnSubscriptionStatus(
636 const PString & eventPackage,
643 virtual void OnSubscriptionStatus(
653 virtual bool CanNotify(
654 const PString & eventPackage
660 const SIPURL & targetAddress,
661 const PString & eventPackage,
668 virtual void OnDialogInfoReceived(
672 void SendNotifyDialogInfo(
679 virtual PBoolean Message(
691 virtual void OnMESSAGECompleted(
698 : m_pdu(pdu), m_transport(transport), m_status(ResponseSent)
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
718 { m_onConnectionlessMessage = notifier; }
723 virtual bool SendOPTIONS(
730 virtual void OnOptionsCompleted(
741 const PString & body,
746 const PString & body,
747 unsigned expire = 300
754 bool includeOffline =
false 761 bool PublishPresence(
763 unsigned expire = 300
768 virtual void OnPresenceInfoReceived (
771 virtual void OnPresenceInfoReceived (
772 const PString & identity,
773 const PString & basic,
799 const PTimeInterval & t1,
800 const PTimeInterval & t2
801 ) { retryTimeoutMin = t1; retryTimeoutMax = t2; }
806 const PTimeInterval & t
807 ) { nonInviteTimeout = t; }
811 const PTimeInterval & t
812 ) { pduCleanUpTimeout = t; }
816 const PTimeInterval & t
817 ) { inviteTimeout = t; }
821 const PTimeInterval & t
822 ) { m_progressTimeout = t; }
826 const PTimeInterval & t
827 ) { ackTimeout = t; }
831 const PTimeInterval & t
832 ) { registrarTimeToLive = t; }
836 const PTimeInterval & t
837 ) { notifierTimeToLive = t; }
841 const PTimeInterval & t
842 ) { natBindingTimeout = t; natBindingTimer.RunContinuous (natBindingTimeout); }
849 PSafePtr<SIPTransaction>
GetTransaction(
const PString & transactionID, PSafetyMode mode = PSafeReadWrite)
850 {
return transactions.FindWithLock(transactionID, mode); }
868 unsigned & authenticateErrors,
870 const SIPURL & proxyOverride,
877 virtual SIPURL GetRegisteredProxy(
const SIPURL & remoteURL);
900 void AdjustToRegistration(
915 virtual SIPURL GetLocalURL(
917 const PString & userName = PString::Empty()
928 void SetProxy(
const SIPURL & url);
934 const PString & hostname,
935 const PString & username,
936 const PString & password
954 virtual PString GetUserAgent()
const;
963 virtual unsigned GetAllowedMethods()
const;
987 PDECLARE_NOTIFIER(PThread,
SIPEndPoint, TransportThreadMain);
988 PDECLARE_NOTIFIER(PTimer,
SIPEndPoint, NATBindingRefresh);
1036 virtual void Work();
1047 : PQueuedThreadPool<
SIP_Work>(maxWorkers)
1049 virtual WorkerThreadBase * CreateWorkerThread();
1050 } m_connectionThreadPool, m_handlerThreadPool;
1064 virtual void OnAddInterface(
const PIPSocket::InterfaceEntry & entry);
1065 virtual void OnRemoveInterface(
const PIPSocket::InterfaceEntry & entry);
1073 friend void InterfaceMonitor::OnAddInterface(
const PIPSocket::InterfaceEntry & entry);
1074 friend void InterfaceMonitor::OnRemoveInterface(
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
unsigned GetRegistrationsCount() const
Definition: sipep.h:457
bool m_wasRegistering
Was registering or unregistering.
Definition: sipep.h:469
bool GetRegisteredYserMode() const
Definition: sipep.h:862
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
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
void SetRegisteredUserMode(bool v)
Definition: sipep.h:861
PNotifierTemplate< ConnectionlessMessageInfo & > ConnectionlessMessageNotifier
Definition: sipep.h:711
Definition: sippdu.h:1314
unsigned GetNextCSeq()
Definition: sipep.h:854
void SetNonInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:805
PTimeInterval natBindingTimeout
Definition: sipep.h:1006
SIPHandlersList activeSIPHandlers
Definition: sipep.h:1010
bool m_registeredUserMode
Definition: sipep.h:1007
PString m_addressofRecord
Address of record for registration.
Definition: sipep.h:468
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
SIP_PDU * m_pdu
Definition: sipep.h:1039
SIP_PDU::StatusCodes m_reason
Definition: sipep.h:1022
StatusCodes
Definition: sippdu.h:518
SIPRegisterHandler * m_handler
Handler for registration.
Definition: sipep.h:467
PStringList GetSubscriptions(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:618
const PTimeInterval & GetNATBindingTimeout() const
Definition: sipep.h:843
void AddTransaction(SIPTransaction *transaction)
Definition: sipep.h:845
const PTimeInterval & GetNonInviteTimeout() const
Definition: sipep.h:808
SIPEndPoint & m_endpoint
Definition: sipep.h:1068
OpalTransport & m_transport
Definition: sipep.h:702
void SetInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:815
PTimeInterval m_progressTimeout
Definition: sipep.h:1002
RegistrationCompletion()
Definition: sipep.h:1023
const PTimeInterval & GetInviteTimeout() const
Definition: sipep.h:818
void * m_userData
User data corresponding to this registration.
Definition: sipep.h:473
const PTimeInterval & GetAckTimeout() const
Definition: sipep.h:828
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
Definition: connection.h:462
PSafePtr< SIPTransaction > GetTransaction(const PString &transactionID, PSafetyMode mode=PSafeReadWrite)
Definition: sipep.h:849
unsigned GetMaxRetries() const
Definition: sipep.h:796
Definition: sippdu.h:1358
PStringToString m_receivedConnectionTokens
Definition: sipep.h:1011
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
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
SIP_PDU::StatusCodes m_reason
Reason for status change.
Definition: sipep.h:471
void SetMIMEForm(PBoolean v)
Definition: sipep.h:792
bool m_reRegistering
Was a registration refresh.
Definition: sipep.h:470
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
ConnectionlessMessageNotifier m_onConnectionlessMessage
Definition: sipep.h:1027
void SetMaxRetries(unsigned r)
Definition: sipep.h:795
unsigned maxRetries
Definition: sipep.h:996
PTimeInterval ackTimeout
Definition: sipep.h:1003
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
bool mimeForm
Definition: sipep.h:995
SIPAuthInfo(const PString &u, const PString &p)
Definition: sipep.h:76
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
void SetUserAgent(const PString &str)
Definition: sipep.h:958
Definition: connection.h:353
PAtomicInteger lastSentCSeq
Definition: sipep.h:1017
WorkThreadPool(unsigned maxWorkers)
Definition: sipep.h:1046
PTimeInterval pduCleanUpTimeout
Definition: sipep.h:1000
Definition: handlers.h:188
const PTimeInterval & GetNotifierTimeToLive() const
Definition: sipep.h:838
const PTimeInterval & GetRetryTimeoutMax() const
Definition: sipep.h:803
bool m_disableTrying
Definition: sipep.h:1076
void SetPduCleanUpTimeout(const PTimeInterval &t)
Definition: sipep.h:810
void SetRetryTimeouts(const PTimeInterval &t1, const PTimeInterval &t2)
Definition: sipep.h:798
Definition: handlers.h:454
PTimeInterval nonInviteTimeout
Definition: sipep.h:999
InterfaceMonitor m_highPriorityMonitor
Definition: sipep.h:1070
bool m_shuttingDown
Definition: sipep.h:1009
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
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