OPAL  Version 3.10.10
manager.h
Go to the documentation of this file.
1 /*
2  * manager.h
3  *
4  * OPAL system manager.
5  *
6  * Open Phone Abstraction Library (OPAL)
7  * Formally known as the Open H323 project.
8  *
9  * Copyright (c) 2001 Equivalence Pty. Ltd.
10  *
11  * The contents of this file are subject to the Mozilla Public License
12  * Version 1.0 (the "License"); you may not use this file except in
13  * compliance with the License. You may obtain a copy of the License at
14  * http://www.mozilla.org/MPL/
15  *
16  * Software distributed under the License is distributed on an "AS IS"
17  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
18  * the License for the specific language governing rights and limitations
19  * under the License.
20  *
21  * The Original Code is Open Phone Abstraction Library.
22  *
23  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
24  *
25  * Contributor(s): ______________________________________.
26  *
27  * $Revision: 27984 $
28  * $Author: rjongbloed $
29  * $Date: 2012-07-10 03:24:24 -0500 (Tue, 10 Jul 2012) $
30  */
31 
32 #ifndef OPAL_OPAL_MANAGER_H
33 #define OPAL_OPAL_MANAGER_H
34 
35 #ifdef P_USE_PRAGMA
36 #pragma interface
37 #endif
38 
39 #include <opal/buildopts.h>
40 
41 #include <opal/pres_ent.h>
42 #include <opal/call.h>
43 #include <opal/connection.h> //OpalConnection::AnswerCallResponse
44 #include <opal/guid.h>
45 #include <codec/silencedetect.h>
46 #include <codec/echocancel.h>
47 #include <ptclib/pstun.h>
48 #include <ptclib/url.h>
49 
50 #if OPAL_VIDEO
51 #include <ptlib/videoio.h>
52 #endif
53 
54 class OpalEndPoint;
55 class OpalMediaPatch;
56 
57 
74 class OpalManager : public PObject
75 {
76  PCLASSINFO(OpalManager, PObject);
77  public:
82  OpalManager();
83 
88  ~OpalManager();
90 
100  void AttachEndPoint(
101  OpalEndPoint * endpoint,
102  const PString & prefix = PString::Empty()
103  );
104 
108  void DetachEndPoint(
109  const PString & prefix
110  );
111  void DetachEndPoint(
112  OpalEndPoint * endpoint
113  );
114 
118  const PString & prefix
119  );
120 
123  PList<OpalEndPoint> GetEndPoints() const;
124 
130  void ShutDownEndpoints();
132 
151  virtual PSafePtr<OpalCall> SetUpCall(
152  const PString & partyA,
153  const PString & partyB,
154  void * userData = NULL,
155  unsigned options = 0,
156  OpalConnection::StringOptions * stringOptions = NULL
157  );
158  virtual PBoolean SetUpCall(
159  const PString & partyA,
160  const PString & partyB,
161  PString & token,
162  void * userData = NULL,
163  unsigned options = 0,
164  OpalConnection::StringOptions * stringOptions = NULL
165  );
166 
172  virtual PBoolean HasCall(
173  const PString & token
174  ) { return activeCalls.FindWithLock(token, PSafeReference) != NULL; }
175 
178  PINDEX GetCallCount() const { return activeCalls.GetSize(); }
179 
182  PArray<PString> GetAllCalls() const { return activeCalls.GetKeys(); }
183 
192  PSafePtr<OpalCall> FindCallWithLock(
193  const PString & token,
194  PSafetyMode mode = PSafeReadWrite
195  ) { return activeCalls.FindWithLock(token, mode); }
196 
205  virtual void OnEstablishedCall(
206  OpalCall & call
207  );
208 
215  virtual PBoolean IsCallEstablished(
216  const PString & token
217  );
218 
228  virtual PBoolean ClearCall(
229  const PString & token,
231  PSyncPoint * sync = NULL
232  );
233 
241  virtual PBoolean ClearCallSynchronous(
242  const PString & token,
244  );
245 
251  virtual void ClearAllCalls(
253  PBoolean wait = true
254  );
255 
269  virtual void OnClearedCall(
270  OpalCall & call
271  );
272 
281  virtual OpalCall * CreateCall(
282  void * userData
283  );
285 
294  virtual void DestroyCall(
295  OpalCall * call
296  );
297 
302  virtual PString GetNextToken(char prefix);
304 
313  virtual PSafePtr<OpalPresentity> AddPresentity(
314  const PString & presentity
315  );
316 
319  virtual PSafePtr<OpalPresentity> GetPresentity(
320  const PString & presentity,
321  PSafetyMode mode = PSafeReference
322  );
323 
326  virtual PStringList GetPresentities() const;
327 
330  virtual bool RemovePresentity(
331  const PString & presentity
332  );
334 
339  virtual PBoolean Message(
340  const PString & to,
341  const PString & body
342  );
343  virtual PBoolean Message(
344  const PURL & to,
345  const PString & type,
346  const PString & body,
347  PURL & from,
348  PString & conversationId
349  );
350  virtual PBoolean Message(
351  OpalIM & message
352  );
353 
356  virtual void OnMessageReceived(
357  const OpalIM & message
358  );
359 
361 
398  virtual PSafePtr<OpalConnection> MakeConnection(
399  OpalCall & call,
400  const PString & party,
401  void * userData = NULL,
402  unsigned int options = 0,
403  OpalConnection::StringOptions * stringOptions = NULL
404  );
405 
411  virtual void OnNewConnection(
412  OpalConnection & connection
413  );
414 
441  virtual PBoolean OnIncomingConnection(
442  OpalConnection & connection,
443  unsigned options,
444  OpalConnection::StringOptions * stringOptions
445  );
446 
453  virtual bool OnRouteConnection(
454  PStringSet & routesTried,
455  const PString & a_party,
456  const PString & b_party,
457  OpalCall & call,
458  unsigned options,
459  OpalConnection::StringOptions * stringOptions
460  );
461 
477  virtual void OnProceeding(
478  OpalConnection & connection
479  );
480 
497  virtual void OnAlerting(
498  OpalConnection & connection
499  );
500 
518  OpalConnection & connection,
519  const PString & caller
520  );
521 
533  virtual void OnConnected(
534  OpalConnection & connection
535  );
536 
550  virtual void OnEstablished(
551  OpalConnection & connection
552  );
553 
569  virtual void OnReleased(
570  OpalConnection & connection
571  );
572 
579  virtual void OnHold(
580  OpalConnection & connection,
581  bool fromRemote,
582  bool onHold
583  );
584  virtual void OnHold(OpalConnection & connection); // For backward compatibility
585 
590  virtual PBoolean OnForwarded(
591  OpalConnection & connection,
592  const PString & remoteParty
593  );
594 
640  virtual bool OnTransferNotify(
641  OpalConnection & connection,
642  const PStringToString & info
643  );
645 
646 
657  bool transportable,
658  bool pcmAudio
659  ) const;
660 
670  virtual void AdjustMediaFormats(
671  bool local,
672  const OpalConnection & connection,
673  OpalMediaFormatList & mediaFormats
674  ) const;
675 
678  virtual PBoolean IsMediaBypassPossible(
679  const OpalConnection & source,
680  const OpalConnection & destination,
681  unsigned sessionID
682  ) const;
683 
699  virtual PBoolean OnOpenMediaStream(
700  OpalConnection & connection,
701  OpalMediaStream & stream
702  );
703 
712  virtual RTP_UDP * CreateRTPSession (const RTP_Session::Params & params);
713 
721  virtual void OnRTPStatistics(
722  const OpalConnection & connection,
723  const RTP_Session & session
724  );
725 
742  virtual bool OnLocalRTP(
743  OpalConnection & connection1,
744  OpalConnection & connection2,
745  unsigned sessionID,
746  bool opened
747  ) const;
748 
774  bool SetMediaPassThrough(
775  const PString & token1,
776  const PString & token2,
777  bool bypass,
778  unsigned sessionID = 0,
779  bool network = true
780  );
781  static bool SetMediaPassThrough(
782  OpalConnection & connection1,
783  OpalConnection & connection2,
784  bool bypass,
785  unsigned sessionID = 0
786  );
787 
792  virtual void OnClosedMediaStream(
793  const OpalMediaStream & stream
794  );
795 
796 #if OPAL_VIDEO
797 
799  virtual PBoolean CreateVideoInputDevice(
800  const OpalConnection & connection,
801  const OpalMediaFormat & mediaFormat,
802  PVideoInputDevice * & device,
803  PBoolean & autoDelete
804  );
805 
809  virtual PBoolean CreateVideoOutputDevice(
810  const OpalConnection & connection,
811  const OpalMediaFormat & mediaFormat,
812  PBoolean preview,
813  PVideoOutputDevice * & device,
814  PBoolean & autoDelete
815  );
816 #endif
817 
826  OpalMediaStream & source,
827  PBoolean requiresPatchThread = true
828  );
829 
836  virtual void OnStartMediaPatch(
837  OpalConnection & connection,
838  OpalMediaPatch & patch
839  );
840 
843  virtual void OnStopMediaPatch(
844  OpalConnection & connection,
845  OpalMediaPatch & patch
846  );
848 
856  virtual void OnUserInputString(
857  OpalConnection & connection,
858  const PString & value
859  );
860 
867  virtual void OnUserInputTone(
868  OpalConnection & connection,
869  char tone,
870  int duration
871  );
872 
875  virtual PString ReadUserInput(
876  OpalConnection & connection,
877  const char * terminators = "#\r\n",
878  unsigned lastDigitTimeout = 4,
879  unsigned firstDigitTimeout = 30
880  );
882 
885  enum MessageWaitingType {
894  };
895 
906  virtual void OnMWIReceived(
907  const PString & party,
908  MessageWaitingType type,
909  const PString & extraInfo
910  );
911 
912 
913  class RouteEntry : public PObject
914  {
915  PCLASSINFO(RouteEntry, PObject);
916  public:
917  RouteEntry(const PString & pat, const PString & dest);
918  void PrintOn(ostream & strm) const;
919  PString pattern;
920  PString destination;
921  PRegularExpression regex;
922  };
923  PARRAY(RouteTable, RouteEntry);
924 
1035  virtual PBoolean AddRouteEntry(
1036  const PString & spec
1037  );
1038 
1045  PBoolean SetRouteTable(
1046  const PStringArray & specs
1047  );
1048 
1053  void SetRouteTable(
1054  const RouteTable & table
1055  );
1056 
1059  const RouteTable & GetRouteTable() const { return m_routeTable; }
1060 
1068  virtual PString ApplyRouteTable(
1069  const PString & source,
1070  const PString & destination,
1071  PINDEX & entry
1072  );
1074 
1075 #if OPAL_HAS_MIXER
1076 
1086  virtual PBoolean StartRecording(
1087  const PString & callToken,
1088  const PFilePath & filename,
1089  const OpalRecordManager::Options & options = false
1090  );
1091 
1094  virtual bool IsRecording(
1095  const PString & callToken
1096  );
1097 
1102  virtual bool StopRecording(
1103  const PString & callToken
1104  );
1105 
1107 #endif
1108 
1113  const OpalProductInfo & GetProductInfo() const { return productInfo; }
1114 
1117  void SetProductInfo(
1118  const OpalProductInfo & info,
1119  bool updateAll = true
1120  );
1121 
1124  const PString & GetDefaultUserName() const { return defaultUserName; }
1125 
1128  void SetDefaultUserName(
1129  const PString & name,
1130  bool updateAll = true
1131  );
1132 
1135  const PString & GetDefaultDisplayName() const { return defaultDisplayName; }
1136 
1139  void SetDefaultDisplayName(
1140  const PString & name,
1141  bool updateAll = true
1142  );
1143 
1144 #if OPAL_VIDEO
1145 
1146  //
1147  // these functions are deprecated and used only for backwards compatibility
1148  // applications should use OpalConnection::GetAutoStart() to check whether
1149  // a specific media type can be auto-started
1150  //
1151 
1154  bool CanAutoStartReceiveVideo() const { return (OpalMediaType::Video().GetAutoStart()&OpalMediaType::Receive) != 0; }
1155 
1159 
1162  bool CanAutoStartTransmitVideo() const { return (OpalMediaType::Video().GetAutoStart()&OpalMediaType::Transmit) != 0; }
1163 
1167 
1168 #endif
1169 
1176  virtual PBoolean IsLocalAddress(
1177  const PIPSocket::Address & remoteAddress
1178  ) const;
1179 
1197  virtual PBoolean IsRTPNATEnabled(
1198  OpalConnection & connection,
1199  const PIPSocket::Address & localAddr,
1200  const PIPSocket::Address & peerAddr,
1201  const PIPSocket::Address & signalAddr,
1202  PBoolean incoming
1203  );
1204 
1211  virtual PBoolean TranslateIPAddress(
1212  PIPSocket::Address & localAddress,
1213  const PIPSocket::Address & remoteAddress
1214  );
1215 
1218  const PString & GetTranslationHost() const { return translationHost; }
1219 
1222  bool SetTranslationHost(
1223  const PString & host
1224  );
1225 
1228  const PIPSocket::Address & GetTranslationAddress() const { return translationAddress; }
1229 
1232  void SetTranslationAddress(
1233  const PIPSocket::Address & address
1234  );
1235 
1241  virtual PNatMethod * GetNatMethod(
1242  const PIPSocket::Address & remoteAddress = PIPSocket::GetDefaultIpAny()
1243  ) const;
1244 
1249  PSTUNClient::NatTypes SetSTUNServer(
1250  const PString & server
1251  );
1252 
1255  const PString & GetSTUNServer() const { return stunServer; }
1256 
1259  PSTUNClient * GetSTUNClient() const { return stun; }
1260 
1263  WORD GetTCPPortBase() const { return tcpPorts.base; }
1264 
1267  WORD GetTCPPortMax() const { return tcpPorts.max; }
1268 
1271  void SetTCPPorts(unsigned tcpBase, unsigned tcpMax);
1272 
1275  WORD GetNextTCPPort();
1276 
1279  WORD GetUDPPortBase() const { return udpPorts.base; }
1280 
1283  WORD GetUDPPortMax() const { return udpPorts.max; }
1284 
1287  void SetUDPPorts(unsigned udpBase, unsigned udpMax);
1288 
1291  WORD GetNextUDPPort();
1292 
1295  WORD GetRtpIpPortBase() const { return rtpIpPorts.base; }
1296 
1299  WORD GetRtpIpPortMax() const { return rtpIpPorts.max; }
1300 
1303  void SetRtpIpPorts(unsigned udpBase, unsigned udpMax);
1304 
1307  WORD GetRtpIpPortPair();
1308 
1312 
1315  void SetMediaTypeOfService(unsigned tos) { m_defaultMediaTypeOfService = (BYTE)tos; }
1316 
1317  // For backward compatibility
1318  BYTE P_DEPRECATED GetRtpIpTypeofService() const { return m_defaultMediaTypeOfService; }
1319  void P_DEPRECATED SetRtpIpTypeofService(unsigned tos) { m_defaultMediaTypeOfService = (BYTE)tos; }
1320 
1323  BYTE GetMediaTypeOfService(const OpalMediaType & type) const;
1324 
1327  void SetMediaTypeOfService(const OpalMediaType & type, unsigned tos);
1328 
1333  PINDEX GetMaxRtpPayloadSize() const { return rtpPayloadSizeMax; }
1334 
1340  PINDEX size,
1341  bool mtu = false
1342  ) { rtpPayloadSizeMax = size - (mtu ? (20+16+12) : 0); }
1343 
1347  PINDEX GetMaxRtpPacketSize() const { return rtpPacketSizeMax; }
1348 
1353  PINDEX size
1354  ) { rtpPacketSizeMax = size; }
1355 
1359  unsigned GetMinAudioJitterDelay() const { return minAudioJitterDelay; }
1360 
1364  unsigned GetMaxAudioJitterDelay() const { return maxAudioJitterDelay; }
1365 
1375  void SetAudioJitterDelay(
1376  unsigned minDelay,
1377  unsigned maxDelay
1378  );
1379 
1382  const PStringArray & GetMediaFormatOrder() const { return mediaFormatOrder; }
1383 
1386  void SetMediaFormatOrder(
1387  const PStringArray & order
1388  );
1389 
1395  const PStringArray & GetMediaFormatMask() const { return mediaFormatMask; }
1396 
1402  void SetMediaFormatMask(
1403  const PStringArray & mask //< New mask
1404  );
1405 
1409  const OpalSilenceDetector::Params & params
1410  ) { silenceDetectParams = params; }
1411 
1415 
1416 #if OPAL_AEC
1417 
1419  virtual void SetEchoCancelParams(
1420  const OpalEchoCanceler::Params & params
1421  ) { echoCancelParams = params; }
1422 
1425  const OpalEchoCanceler::Params & GetEchoCancelParams() const { return echoCancelParams; }
1426 #endif
1427 
1428 #if OPAL_VIDEO
1429 
1437  virtual PBoolean SetVideoInputDevice(
1438  const PVideoDevice::OpenArgs & deviceArgs
1439  );
1440 
1444  const PVideoDevice::OpenArgs & GetVideoInputDevice() const { return videoInputDevice; }
1445 
1453  virtual PBoolean SetVideoPreviewDevice(
1454  const PVideoDevice::OpenArgs & deviceArgs
1455  );
1456 
1460  const PVideoDevice::OpenArgs & GetVideoPreviewDevice() const { return videoPreviewDevice; }
1461 
1469  virtual PBoolean SetVideoOutputDevice(
1470  const PVideoDevice::OpenArgs & deviceArgs
1471  );
1472 
1476  const PVideoDevice::OpenArgs & GetVideoOutputDevice() const { return videoOutputDevice; }
1477 
1478 #endif
1479 
1480  PBoolean DetectInBandDTMFDisabled() const
1481  { return disableDetectInBandDTMF; }
1482 
1486  PBoolean mode
1487  ) { disableDetectInBandDTMF = mode; }
1488 
1491  const PTimeInterval & GetNoMediaTimeout() const { return noMediaTimeout; }
1492 
1495  PBoolean SetNoMediaTimeout(
1496  const PTimeInterval & newInterval
1497  );
1498 
1501  const PString & GetDefaultILSServer() const { return ilsServer; }
1502 
1506  const PString & server
1507  ) { ilsServer = server; }
1509 
1510  // needs to be public for gcc 3.4
1511  void GarbageCollection();
1512 
1513 #ifdef OPAL_ZRTP
1514  virtual bool GetZRTPEnabled() const;
1515 #endif
1516 
1517  virtual void OnApplyStringOptions(
1518  OpalConnection & conn,
1519  OpalConnection::StringOptions & stringOptions
1520  );
1521 
1522  protected:
1523  // Configuration variables
1525 
1528 
1530  std::map<OpalMediaType, BYTE> m_mediaTypeOfService;
1531 
1536  PStringArray mediaFormatOrder;
1537  PStringArray mediaFormatMask;
1539  PTimeInterval noMediaTimeout;
1540  PString ilsServer;
1541 
1543 #if OPAL_AEC
1544  OpalEchoCanceler::Params echoCancelParams;
1545 #endif
1546 
1547 #if OPAL_VIDEO
1548  PVideoDevice::OpenArgs videoInputDevice;
1549  PVideoDevice::OpenArgs videoPreviewDevice;
1550  PVideoDevice::OpenArgs videoOutputDevice;
1551 #endif
1552 
1553  struct PortInfo {
1554  void Set(
1555  unsigned base,
1556  unsigned max,
1557  unsigned range,
1558  unsigned dflt
1559  );
1560  WORD GetNext(
1561  unsigned increment
1562  );
1563 
1564  PMutex mutex;
1565  WORD base;
1566  WORD max;
1567  WORD current;
1569 
1570  class InterfaceMonitor : public PInterfaceMonitorClient
1571  {
1572  PCLASSINFO(InterfaceMonitor, PInterfaceMonitorClient);
1573 
1574  enum {
1575  OpalManagerInterfaceMonitorClientPriority = 100,
1576  };
1577  public:
1578  InterfaceMonitor(OpalManager & manager);
1579 
1580  protected:
1581  virtual void OnAddInterface(const PIPSocket::InterfaceEntry & entry);
1582  virtual void OnRemoveInterface(const PIPSocket::InterfaceEntry & entry);
1583 
1585  };
1586 
1588  PIPSocket::Address translationAddress;
1589  PString stunServer;
1590  PSTUNClient * stun;
1592 
1593  RouteTable m_routeTable;
1595 
1596  // Dynamic variables
1597  PReadWriteMutex endpointsMutex;
1598  PList<OpalEndPoint> endpointList;
1599  std::map<PString, OpalEndPoint *> endpointMap;
1600 
1601  PAtomicInteger lastCallTokenID;
1602 
1603  class CallDict : public PSafeDictionary<PString, OpalCall>
1604  {
1605  public:
1606  CallDict(OpalManager & mgr) : manager(mgr) { }
1607  virtual void DeleteObject(PObject * object) const;
1609  } activeCalls;
1610 
1611  PSafeDictionary<PString, OpalPresentity> m_presentities;
1612 
1613  PAtomicInteger m_clearingAllCallsCount;
1615  PSyncPoint m_allCallsCleared;
1616  void InternalClearAllCalls(OpalConnection::CallEndReason reason, bool wait, bool first);
1617 
1618  PThread * garbageCollector;
1621  PDECLARE_NOTIFIER(PThread, OpalManager, GarbageMain);
1622 
1623 #ifdef OPAL_ZRTP
1624  bool zrtpEnabled;
1625 #endif
1626 
1627  friend OpalCall::OpalCall(OpalManager & mgr);
1628  friend void OpalCall::InternalOnClear();
1629 
1630  private:
1631  P_REMOVE_VIRTUAL(OpalCall *,CreateCall(), 0);
1632  P_REMOVE_VIRTUAL(PBoolean, OnIncomingConnection(OpalConnection &, unsigned), false);
1633  P_REMOVE_VIRTUAL(PBoolean, OnIncomingConnection(OpalConnection &), false);
1634  P_REMOVE_VIRTUAL(PBoolean, OnStartMediaPatch(const OpalMediaPatch &), false);
1635  P_REMOVE_VIRTUAL_VOID(AdjustMediaFormats(const OpalConnection &, OpalMediaFormatList &) const);
1636  P_REMOVE_VIRTUAL_VOID(OnMessageReceived(const PURL&,const PString&,const PURL&,const PString&,const PString&,const PString&));
1637 
1638 
1639 #ifdef OPAL_HAS_IM
1640  public:
1642 
1643  protected:
1645 #endif
1646 };
1647 
1648 
1649 PString OpalGetVersion();
1650 unsigned OpalGetMajorVersion();
1651 unsigned OpalGetMinorVersion();
1652 unsigned OpalGetBuildNumber();
1653 
1654 
1655 #endif // OPAL_OPAL_MANAGER_H
1656 
1657 
1658 // End of File ///////////////////////////////////////////////////////////////
PString OpalGetVersion()
void GarbageCollection()
Definition: silencedetect.h:54
PSafeDictionary< PString, OpalPresentity > m_presentities
Definition: manager.h:1611
Definition: manager.h:74
PBoolean disableDetectInBandDTMF
Definition: manager.h:1538
PINDEX rtpPayloadSizeMax
Definition: manager.h:1532
WORD GetNextTCPPort()
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)
Definition: rtp.h:502
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)
WORD GetRtpIpPortPair()
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 &params)
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
static const OpalMediaType & Video()
Definition: mediatype.h:57
void SetRtpIpPorts(unsigned udpBase, unsigned udpMax)
virtual PSafePtr< OpalPresentity > AddPresentity(const PString &presentity)
virtual bool RemovePresentity(const PString &presentity)
void SetAutoStart(OpalMediaType::AutoStartMode v)
Definition: mediatype.h:153
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
Definition: im.h:42
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)
Definition: mediafmt.h:72
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 &params)
WORD GetUDPPortBase() const
Definition: manager.h:1279
OpalCall(OpalManager &manager)
struct OpalManager::PortInfo udpPorts
void ShutDownEndpoints()
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)
Definition: patch.h:60
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)
Definition: mediafmt.h:724
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)
Definition: call.h:65
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
Definition: rtp.h:509
PString stunServer
Definition: manager.h:1589
Definition: manager.h:890
virtual void OnMessageReceived(const OpalIM &message)
Definition: mediatype.h:94
WORD GetRtpIpPortMax() const
Definition: manager.h:1299
OpalMediaTypeDefinition * GetDefinition() const
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)
Definition: mediatype.h:93
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
Definition: im.h:257
virtual void OnRemoveInterface(const PIPSocket::InterfaceEntry &entry)
unsigned OpalGetMajorVersion()
void InternalOnClear()
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
WORD GetNextUDPPort()
void PrintOn(ostream &strm) const
WORD GetRtpIpPortBase() const
Definition: manager.h:1295
virtual void OnNewConnection(OpalConnection &connection)
virtual PBoolean OnOpenMediaStream(OpalConnection &connection, OpalMediaStream &stream)
Definition: mediastrm.h:111
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
std::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
Definition: rtp.h:1098
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)