32 #ifndef OPAL_OPAL_MANAGER_H
33 #define OPAL_OPAL_MANAGER_H
47 #include <ptclib/pstun.h>
48 #include <ptclib/url.h>
51 #include <ptlib/videoio.h>
102 const PString & prefix = PString::Empty()
109 const PString & prefix
118 const PString & prefix
152 const PString & partyA,
153 const PString & partyB,
154 void * userData = NULL,
155 unsigned options = 0,
159 const PString & partyA,
160 const PString & partyB,
162 void * userData = NULL,
163 unsigned options = 0,
173 const PString & token
174 ) {
return activeCalls.FindWithLock(token, PSafeReference) != NULL; }
193 const PString & token,
194 PSafetyMode mode = PSafeReadWrite
195 ) {
return activeCalls.FindWithLock(token, mode); }
216 const PString & token
229 const PString & token,
231 PSyncPoint * sync = NULL
242 const PString & token,
314 const PString & presentity
320 const PString & presentity,
321 PSafetyMode mode = PSafeReference
331 const PString & presentity
345 const PString & type,
346 const PString & body,
348 PString & conversationId
400 const PString & party,
401 void * userData = NULL,
402 unsigned int options = 0,
454 PStringSet & routesTried,
455 const PString & a_party,
456 const PString & b_party,
519 const PString & caller
592 const PString & remoteParty
642 const PStringToString & info
775 const PString & token1,
776 const PString & token2,
778 unsigned sessionID = 0,
785 unsigned sessionID = 0
802 PVideoInputDevice * & device,
803 PBoolean & autoDelete
813 PVideoOutputDevice * & device,
814 PBoolean & autoDelete
827 PBoolean requiresPatchThread =
true
858 const PString & value
877 const char * terminators =
"#\r\n",
878 unsigned lastDigitTimeout = 4,
879 unsigned firstDigitTimeout = 30
907 const PString & party,
909 const PString & extraInfo
917 RouteEntry(
const PString & pat,
const PString & dest);
918 void PrintOn(ostream & strm)
const;
1036 const PString & spec
1046 const PStringArray & specs
1054 const RouteTable & table
1069 const PString & source,
1070 const PString & destination,
1087 const PString & callToken,
1088 const PFilePath & filename,
1095 const PString & callToken
1103 const PString & callToken
1119 bool updateAll =
true
1129 const PString & name,
1130 bool updateAll =
true
1140 const PString & name,
1141 bool updateAll =
true
1177 const PIPSocket::Address & remoteAddress
1199 const PIPSocket::Address & localAddr,
1200 const PIPSocket::Address & peerAddr,
1201 const PIPSocket::Address & signalAddr,
1212 PIPSocket::Address & localAddress,
1213 const PIPSocket::Address & remoteAddress
1223 const PString & host
1233 const PIPSocket::Address & address
1242 const PIPSocket::Address & remoteAddress = PIPSocket::GetDefaultIpAny()
1250 const PString & server
1271 void SetTCPPorts(
unsigned tcpBase,
unsigned tcpMax);
1287 void SetUDPPorts(
unsigned udpBase,
unsigned udpMax);
1387 const PStringArray & order
1403 const PStringArray & mask
1419 virtual void SetEchoCancelParams(
1421 ) { echoCancelParams = params; }
1438 const PVideoDevice::OpenArgs & deviceArgs
1454 const PVideoDevice::OpenArgs & deviceArgs
1470 const PVideoDevice::OpenArgs & deviceArgs
1496 const PTimeInterval & newInterval
1506 const PString & server
1514 virtual bool GetZRTPEnabled()
const;
1575 OpalManagerInterfaceMonitorClientPriority = 100,
1581 virtual void OnAddInterface(
const PIPSocket::InterfaceEntry & entry);
1603 class CallDict :
public PSafeDictionary<PString, OpalCall>
1636 P_REMOVE_VIRTUAL_VOID(
OnMessageReceived(
const PURL&,
const PString&,
const PURL&,
const PString&,
const PString&,
const PString&));
1655 #endif // OPAL_OPAL_MANAGER_H
Definition: silencedetect.h:54
PSafeDictionary< PString, OpalPresentity > m_presentities
Definition: manager.h:1611
PBoolean disableDetectInBandDTMF
Definition: manager.h:1538
PINDEX rtpPayloadSizeMax
Definition: manager.h:1532
PAtomicInteger lastCallTokenID
Definition: manager.h:1601
virtual PBoolean StartRecording(const PString &callToken, const PFilePath &filename, const OpalRecordManager::Options &options=false)
Definition: endpoint.h:67
virtual void OnClearedCall(OpalCall &call)
void SetAutoStartTransmitVideo(bool can)
Definition: manager.h:1166
PINDEX GetCallCount() const
Definition: manager.h:178
InterfaceMonitor * interfaceMonitor
Definition: manager.h:1591
struct OpalManager::PortInfo tcpPorts
virtual void OnConnected(OpalConnection &connection)
bool SetMediaPassThrough(const PString &token1, const PString &token2, bool bypass, unsigned sessionID=0, bool network=true)
CallDict(OpalManager &mgr)
Definition: manager.h:1606
virtual PString ReadUserInput(OpalConnection &connection, const char *terminators="#\r\n", unsigned lastDigitTimeout=4, unsigned firstDigitTimeout=30)
virtual PBoolean Message(const PString &to, const PString &body)
virtual PSafePtr< OpalCall > SetUpCall(const PString &partyA, const PString &partyB, void *userData=NULL, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
bool garbageCollectSkip
Definition: manager.h:1620
bool CanAutoStartReceiveVideo() const
Definition: manager.h:1154
void SetUDPPorts(unsigned udpBase, unsigned udpMax)
virtual PBoolean SetVideoPreviewDevice(const PVideoDevice::OpenArgs &deviceArgs)
PINDEX GetMaxRtpPacketSize() const
Definition: manager.h:1347
OpalManager::CallDict activeCalls
const PString & GetDefaultILSServer() const
Definition: manager.h:1501
PSyncPoint garbageCollectExit
Definition: manager.h:1619
OpalSilenceDetector::Params silenceDetectParams
Definition: manager.h:1542
virtual PBoolean AddRouteEntry(const PString &spec)
BYTE m_defaultMediaTypeOfService
Definition: manager.h:1529
PString defaultDisplayName
Definition: manager.h:1527
PArray< PString > GetAllCalls() const
Definition: manager.h:182
PThread * garbageCollector
Definition: manager.h:1618
virtual void OnHold(OpalConnection &connection, bool fromRemote, bool onHold)
const PStringArray & GetMediaFormatMask() const
Definition: manager.h:1395
PMutex mutex
Definition: manager.h:1564
void SetTCPPorts(unsigned tcpBase, unsigned tcpMax)
Definition: manager.h:913
virtual PBoolean ClearCallSynchronous(const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser)
unsigned OpalGetMinorVersion()
PINDEX rtpPacketSizeMax
Definition: manager.h:1533
PSTUNClient * stun
Definition: manager.h:1590
PString pattern
Definition: manager.h:919
WORD current
Definition: manager.h:1567
virtual void SetSilenceDetectParams(const OpalSilenceDetector::Params ¶ms)
Definition: manager.h:1408
PVideoDevice::OpenArgs videoPreviewDevice
Definition: manager.h:1549
Definition: manager.h:889
virtual bool IsRecording(const PString &callToken)
void SetProductInfo(const OpalProductInfo &info, bool updateAll=true)
virtual PNatMethod * GetNatMethod(const PIPSocket::Address &remoteAddress=PIPSocket::GetDefaultIpAny()) const
void SetRtpIpPorts(unsigned udpBase, unsigned udpMax)
virtual PSafePtr< OpalPresentity > AddPresentity(const PString &presentity)
virtual bool RemovePresentity(const PString &presentity)
PDECLARE_NOTIFIER(PThread, OpalManager, GarbageMain)
virtual void ClearAllCalls(OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PBoolean wait=true)
void SetAutoStartReceiveVideo(bool can)
Definition: manager.h:1158
Definition: manager.h:892
const PIPSocket::Address & GetTranslationAddress() const
Definition: manager.h:1228
void DetachEndPoint(const PString &prefix)
PSTUNClient::NatTypes SetSTUNServer(const PString &server)
virtual bool OnLocalRTP(OpalConnection &connection1, OpalConnection &connection2, unsigned sessionID, bool opened) const
virtual bool OnRouteConnection(PStringSet &routesTried, const PString &a_party, const PString &b_party, OpalCall &call, unsigned options, OpalConnection::StringOptions *stringOptions)
OpalIMManager & GetIMManager()
Definition: manager.h:1641
virtual void OnMWIReceived(const PString &party, MessageWaitingType type, const PString &extraInfo)
virtual void OnStartMediaPatch(OpalConnection &connection, OpalMediaPatch &patch)
virtual PString GetNextToken(char prefix)
PString translationHost
Definition: manager.h:1587
virtual void OnApplyStringOptions(OpalConnection &conn, OpalConnection::StringOptions &stringOptions)
Definition: manager.h:1570
PString defaultUserName
Definition: manager.h:1526
unsigned minAudioJitterDelay
Definition: manager.h:1534
PBoolean SetNoMediaTimeout(const PTimeInterval &newInterval)
virtual PBoolean SetVideoInputDevice(const PVideoDevice::OpenArgs &deviceArgs)
const PString & GetDefaultDisplayName() const
Definition: manager.h:1135
virtual void OnUserInputTone(OpalConnection &connection, char tone, int duration)
PSTUNClient * GetSTUNClient() const
Definition: manager.h:1259
PStringArray mediaFormatMask
Definition: manager.h:1537
void SetMaxRtpPayloadSize(PINDEX size, bool mtu=false)
Definition: manager.h:1339
virtual PBoolean IsLocalAddress(const PIPSocket::Address &remoteAddress) const
void Set(unsigned base, unsigned max, unsigned range, unsigned dflt)
PString ilsServer
Definition: manager.h:1540
Definition: manager.h:887
OpalIMManager * m_imManager
Definition: manager.h:1644
virtual void DeleteObject(PObject *object) const
virtual void OnUserInputString(OpalConnection &connection, const PString &value)
virtual PBoolean CreateVideoInputDevice(const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, PBoolean &autoDelete)
OpalCall * InternalCreateCall()
void InternalClearAllCalls(OpalConnection::CallEndReason reason, bool wait, bool first)
virtual PSafePtr< OpalConnection > MakeConnection(OpalCall &call, const PString &party, void *userData=NULL, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)
virtual void OnStopMediaPatch(OpalConnection &connection, OpalMediaPatch &patch)
const OpalProductInfo & GetProductInfo() const
Definition: manager.h:1113
virtual PStringList GetPresentities() const
virtual PBoolean IsCallEstablished(const PString &token)
PStringArray mediaFormatOrder
Definition: manager.h:1536
PVideoDevice::OpenArgs videoOutputDevice
Definition: manager.h:1550
const PStringArray & GetMediaFormatOrder() const
Definition: manager.h:1382
Definition: manager.h:891
void SetMediaFormatOrder(const PStringArray &order)
virtual void OnAddInterface(const PIPSocket::InterfaceEntry &entry)
AnswerCallResponse
Definition: connection.h:417
Definition: connection.h:462
WORD GetNext(unsigned increment)
virtual RTP_UDP * CreateRTPSession(const RTP_Session::Params ¶ms)
WORD GetUDPPortBase() const
Definition: manager.h:1279
OpalCall(OpalManager &manager)
struct OpalManager::PortInfo udpPorts
WORD GetTCPPortBase() const
Definition: manager.h:1263
RouteEntry(const PString &pat, const PString &dest)
OpalManager & m_manager
Definition: manager.h:1584
virtual void OnProceeding(OpalConnection &connection)
MessageWaitingType
Message waiting sub-types.
Definition: manager.h:886
virtual void OnClosedMediaStream(const OpalMediaStream &stream)
OpalEndPoint * FindEndPoint(const PString &prefix)
Definition: manager.h:888
virtual bool OnTransferNotify(OpalConnection &connection, const PStringToString &info)
virtual PBoolean ClearCall(const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL)
void SetDefaultUserName(const PString &name, bool updateAll=true)
PRegularExpression regex
Definition: manager.h:921
const PTimeInterval & GetNoMediaTimeout() const
Definition: manager.h:1491
virtual OpalMediaPatch * CreateMediaPatch(OpalMediaStream &source, PBoolean requiresPatchThread=true)
virtual PBoolean OnIncomingConnection(OpalConnection &connection, unsigned options, OpalConnection::StringOptions *stringOptions)
WORD base
Definition: manager.h:1565
PARRAY(RouteTable, RouteEntry)
WORD GetTCPPortMax() const
Definition: manager.h:1267
virtual OpalMediaFormatList GetCommonMediaFormats(bool transportable, bool pcmAudio) const
OpalProductInfo productInfo
Definition: manager.h:1524
virtual PBoolean IsRTPNATEnabled(OpalConnection &connection, const PIPSocket::Address &localAddr, const PIPSocket::Address &peerAddr, const PIPSocket::Address &signalAddr, PBoolean incoming)
virtual void OnRTPStatistics(const OpalConnection &connection, const RTP_Session &session)
bool SetTranslationHost(const PString &host)
bool CanAutoStartTransmitVideo() const
Definition: manager.h:1162
Definition: echocancel.h:60
PString stunServer
Definition: manager.h:1589
Definition: manager.h:890
virtual void OnMessageReceived(const OpalIM &message)
WORD GetRtpIpPortMax() const
Definition: manager.h:1299
Definition: manager.h:893
const OpalSilenceDetector::Params & GetSilenceDetectParams() const
Definition: manager.h:1414
virtual PBoolean OnForwarded(OpalConnection &connection, const PString &remoteParty)
void SetAudioJitterDelay(unsigned minDelay, unsigned maxDelay)
PBoolean DetectInBandDTMFDisabled() const
Definition: manager.h:1480
virtual PBoolean IsMediaBypassPossible(const OpalConnection &source, const OpalConnection &destination, unsigned sessionID) const
WORD GetUDPPortMax() const
Definition: manager.h:1283
virtual void OnRemoveInterface(const PIPSocket::InterfaceEntry &entry)
unsigned OpalGetMajorVersion()
const PString & GetSTUNServer() const
Definition: manager.h:1255
virtual OpalConnection::AnswerCallResponse OnAnswerCall(OpalConnection &connection, const PString &caller)
unsigned OpalGetBuildNumber()
virtual void OnEstablished(OpalConnection &connection)
virtual void DestroyCall(OpalCall *call)
BYTE P_DEPRECATED GetRtpIpTypeofService() const
Definition: manager.h:1318
unsigned maxAudioJitterDelay
Definition: manager.h:1535
virtual PBoolean CreateVideoOutputDevice(const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PBoolean preview, PVideoOutputDevice *&device, PBoolean &autoDelete)
PINDEX GetMaxRtpPayloadSize() const
Definition: manager.h:1333
PTimeInterval noMediaTimeout
Definition: manager.h:1539
void SetDefaultILSServer(const PString &server)
Definition: manager.h:1505
std::map< PString, OpalEndPoint * > endpointMap
Definition: manager.h:1599
PMutex m_clearingAllCallsMutex
Definition: manager.h:1614
void AttachEndPoint(OpalEndPoint *endpoint, const PString &prefix=PString::Empty())
PList< OpalEndPoint > endpointList
Definition: manager.h:1598
Definition: connection.h:396
void SetDefaultDisplayName(const PString &name, bool updateAll=true)
PSafePtr< OpalCall > FindCallWithLock(const PString &token, PSafetyMode mode=PSafeReadWrite)
Definition: manager.h:192
struct OpalManager::PortInfo rtpIpPorts
virtual void OnEstablishedCall(OpalCall &call)
RouteTable m_routeTable
Definition: manager.h:1593
Definition: manager.h:1553
void PrintOn(ostream &strm) const
WORD GetRtpIpPortBase() const
Definition: manager.h:1295
virtual void OnNewConnection(OpalConnection &connection)
virtual PBoolean OnOpenMediaStream(OpalConnection &connection, OpalMediaStream &stream)
OpalManager & manager
Definition: manager.h:1608
PString destination
Definition: manager.h:920
virtual PString ApplyRouteTable(const PString &source, const PString &destination, PINDEX &entry)
void SetTranslationAddress(const PIPSocket::Address &address)
Definition: manager.h:1603
PVideoDevice::OpenArgs videoInputDevice
Definition: manager.h:1548
virtual PBoolean TranslateIPAddress(PIPSocket::Address &localAddress, const PIPSocket::Address &remoteAddress)
BYTE GetMediaTypeOfService() const
Definition: manager.h:1311
PReadWriteMutex endpointsMutex
Definition: manager.h:1597
const PVideoDevice::OpenArgs & GetVideoPreviewDevice() const
Definition: manager.h:1460
Definition: connection.h:353
void SetMediaFormatMask(const PStringArray &mask)
PList< OpalEndPoint > GetEndPoints() const
PAtomicInteger m_clearingAllCallsCount
Definition: manager.h:1613
virtual bool StopRecording(const PString &callToken)
const PString & GetTranslationHost() const
Definition: manager.h:1218
virtual PBoolean HasCall(const PString &token)
Definition: manager.h:172
WORD max
Definition: manager.h:1566
virtual PSafePtr< OpalPresentity > GetPresentity(const PString &presentity, PSafetyMode mode=PSafeReference)
void SetMediaTypeOfService(unsigned tos)
Definition: manager.h:1315
unsigned GetMaxAudioJitterDelay() const
Definition: manager.h:1364
InterfaceMonitor(OpalManager &manager)
void P_DEPRECATED SetRtpIpTypeofService(unsigned tos)
Definition: manager.h:1319
const PString & GetDefaultUserName() const
Definition: manager.h:1124
map< OpalMediaType, BYTE > m_mediaTypeOfService
Definition: manager.h:1530
PBoolean SetRouteTable(const PStringArray &specs)
const PVideoDevice::OpenArgs & GetVideoOutputDevice() const
Definition: manager.h:1476
virtual PBoolean SetVideoOutputDevice(const PVideoDevice::OpenArgs &deviceArgs)
PIPSocket::Address translationAddress
Definition: manager.h:1588
unsigned GetMinAudioJitterDelay() const
Definition: manager.h:1359
PSyncPoint m_allCallsCleared
Definition: manager.h:1615
void DisableDetectInBandDTMF(PBoolean mode)
Definition: manager.h:1485
const RouteTable & GetRouteTable() const
Definition: manager.h:1059
Definition: connection.h:362
virtual void AdjustMediaFormats(bool local, const OpalConnection &connection, OpalMediaFormatList &mediaFormats) const
Definition: recording.h:80
virtual void OnReleased(OpalConnection &connection)
Definition: connection.h:312
const PVideoDevice::OpenArgs & GetVideoInputDevice() const
Definition: manager.h:1444
virtual void OnAlerting(OpalConnection &connection)
PMutex m_routeMutex
Definition: manager.h:1594
void SetMaxRtpPacketSize(PINDEX size)
Definition: manager.h:1352
virtual OpalCall * CreateCall(void *userData)