OPAL  Version 3.18.8
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 
28 #ifndef OPAL_OPAL_MANAGER_H
29 #define OPAL_OPAL_MANAGER_H
30 
31 #ifdef P_USE_PRAGMA
32 #pragma interface
33 #endif
34 
35 #include <opal_config.h>
36 
37 #include <opal/pres_ent.h>
38 #include <opal/call.h>
39 #include <opal/connection.h> //OpalConnection::AnswerCallResponse
40 #include <opal/guid.h>
41 #include <codec/silencedetect.h>
42 #include <codec/echocancel.h>
43 #include <im/im.h>
44 
45 #include <ptclib/pstun.h>
46 #include <ptclib/url.h>
47 #include <ptclib/pxml.h>
48 #include <ptclib/threadpool.h>
49 
50 #if OPAL_VIDEO
51 // Inside #if so does not force loading of factories when statically linked.
52 #include <ptlib/videoio.h>
53 #endif
54 
55 
56 class OpalEndPoint;
57 class OpalMediaPatch;
59 class PSSLCertificate;
60 class PSSLPrivateKey;
61 
62 
63 #define OPAL_SCRIPT_CALL_TABLE_NAME "OpalCall"
64 
65 
66 class OpalConferenceState : public PObject
67 {
68  PCLASSINFO(OpalConferenceState, PObject);
69 public:
71  : m_active(true)
72  , m_locked(false)
73  , m_maxUsers(0)
74  { }
75 
76  enum ChangeType {
82  };
83  friend ostream & operator<<(ostream & strm, ChangeType type);
84 
85  PString m_internalURI;
86 
87  PString m_displayText;
88  PString m_subject;
89  PString m_notes;
90  PString m_keywords;
91  bool m_active;
92  bool m_locked;
93 
94  struct URI
95  {
96  PString m_uri;
97  PString m_displayText;
98  PString m_purpose;
101  };
102  typedef std::vector<URI> URIs;
103 
109  unsigned m_maxUsers;
110 
111  struct User
112  {
113  PString m_uri;
114  PString m_displayText;
115  PStringSet m_roles;
116  };
117  typedef std::vector<User> Users;
119 
120 #if P_EXPAT
121 
127  PXML m_xml;
128 #endif
129 };
130 
131 typedef std::list<OpalConferenceState> OpalConferenceStates;
132 
133 
150 class OpalManager : public PObject
151 {
152  PCLASSINFO(OpalManager, PObject);
153  public:
158  OpalManager();
159 
164  ~OpalManager();
166 
176  void AttachEndPoint(
177  OpalEndPoint * endpoint,
178  const PString & prefix = PString::Empty()
179  );
180 
184  void DetachEndPoint(
185  const PString & prefix
186  );
187  void DetachEndPoint(
188  OpalEndPoint * endpoint
189  );
190 
194  const PString & prefix
195  ) const;
196 
199  template <class T> T * FindEndPointAs(
200  const PString & prefix
201  ) const { return dynamic_cast<T *>(FindEndPoint(prefix)); }
202 
205  PList<OpalEndPoint> GetEndPoints() const;
206 
209  PStringList GetPrefixNames(
210  const OpalEndPoint * endpoint = NULL
211  ) const;
212 
217  virtual PStringList GetNetworkURIs(
218  const PString & name
219  ) const;
220 
226  void ShutDownEndpoints();
228 
229 
230 #if OPAL_HAS_PRESENCE
231 
239  virtual PSafePtr<OpalPresentity> AddPresentity(
240  const PString & presentity
241  );
242 
245  virtual PSafePtr<OpalPresentity> GetPresentity(
246  const PString & presentity,
247  PSafetyMode mode = PSafeReference
248  );
249 
252  virtual PStringList GetPresentities() const;
253 
256  virtual bool RemovePresentity(
257  const PString & presentity
258  );
260 #endif // OPAL_HAS_PRESENCE
261 
262 
281  virtual PSafePtr<OpalCall> SetUpCall(
282  const PString & partyA,
283  const PString & partyB,
284  void * userData = NULL,
285  unsigned options = 0,
286  OpalConnection::StringOptions * stringOptions = NULL
287  );
288  virtual PBoolean SetUpCall(
289  const PString & partyA,
290  const PString & partyB,
291  PString & token,
292  void * userData = NULL,
293  unsigned options = 0,
294  OpalConnection::StringOptions * stringOptions = NULL
295  );
296 
297 #if OPAL_HAS_MIXER
298 
312  virtual bool SetUpConference(
313  OpalCall & call,
314  const char * mixerURI = NULL,
315  const char * localURI = NULL
316  );
317 #endif // OPAL_HAS_MIXER
318 
324  virtual PBoolean HasCall(
325  const PString & token
326  ) { return m_activeCalls.Find(token, PSafeReference) != NULL; }
327 
330  PINDEX GetCallCount() const { return m_activeCalls.GetSize(); }
331 
334  PArray<PString> GetAllCalls() const { return m_activeCalls.GetKeys(); }
335 
344  PSafePtr<OpalCall> FindCallWithLock(
345  const PString & token,
346  PSafetyMode mode = PSafeReadWrite
347  ) const { return m_activeCalls.Find(token, mode); }
348 
360  virtual bool OnLocalIncomingCall(
361  OpalLocalConnection & connection
362  );
363 
371  virtual bool OnLocalOutgoingCall(
372  const OpalLocalConnection & connection
373  );
374 
383  virtual void OnEstablishedCall(
384  OpalCall & call
385  );
386 
393  virtual PBoolean IsCallEstablished(
394  const PString & token
395  );
396 
406  virtual PBoolean ClearCall(
407  const PString & token,
408  OpalConnection::CallEndReason reason = OpalConnection::EndedByLocalUser,
409  PSyncPoint * sync = NULL
410  );
411 
419  virtual PBoolean ClearCallSynchronous(
420  const PString & token,
421  OpalConnection::CallEndReason reason = OpalConnection::EndedByLocalUser
422  );
423 
429  virtual void ClearAllCalls(
430  OpalConnection::CallEndReason reason = OpalConnection::EndedByLocalUser,
431  PBoolean wait = true
432  );
433 
447  virtual void OnClearedCall(
448  OpalCall & call
449  );
450 
459  virtual OpalCall * CreateCall(
460  void * userData
461  );
462  OpalCall * InternalCreateCall(void * userData = NULL);
463 
472  virtual void DestroyCall(
473  OpalCall * call
474  );
475 
480  virtual PString GetNextToken(char prefix);
482 
483 
489  class RouteEntry : public PObject
490  {
491  PCLASSINFO(RouteEntry, PObject);
492  public:
493  RouteEntry(const PString & partyA, const PString & partyB, const PString & dest);
494  RouteEntry(const PString & spec);
495 
496  PObject * Clone() const { return new RouteEntry(*this); }
497  void PrintOn(ostream & strm) const;
498 
499  bool IsValid() const;
500  bool IsMatch(const PString & search) const;
501 
502  const PString & GetPartyA() const { return m_partyA; }
503  const PString & GetPartyB() const { return m_partyB; }
504  const PString & GetDestination() const { return m_destination; }
505 
506  protected:
507  PString m_partyA;
508  PString m_partyB;
509  PString m_destination;
510  PRegularExpression m_regex;
511 
512  void CompileRegEx();
513  };
514  PARRAY(RouteTable, RouteEntry);
515 
630  virtual PBoolean AddRouteEntry(
631  const PString & spec
632  );
633 
640  PBoolean SetRouteTable(
641  const PStringArray & specs
642  );
643 
648  void SetRouteTable(
649  const RouteTable & table
650  );
651 
654  const RouteTable & GetRouteTable() const { return m_routeTable; }
655 
663  virtual PString ApplyRouteTable(
664  const PString & source,
665  const PString & destination,
666  PINDEX & entry
667  );
668 
675  virtual bool OnRouteConnection(
676  PStringSet & routesTried,
677  const PString & a_party,
678  const PString & b_party,
679  OpalCall & call,
680  unsigned options,
681  OpalConnection::StringOptions * stringOptions
682  );
684 
685 
722  virtual PSafePtr<OpalConnection> MakeConnection(
723  OpalCall & call,
724  const PString & party,
725  void * userData = NULL,
726  unsigned int options = 0,
727  OpalConnection::StringOptions * stringOptions = NULL
728  );
729 
735  virtual void OnNewConnection(
736  OpalConnection & connection
737  );
738 
765  virtual PBoolean OnIncomingConnection(
766  OpalConnection & connection,
767  unsigned options,
768  OpalConnection::StringOptions * stringOptions
769  );
770 
776  virtual void OnApplyStringOptions(
777  OpalConnection & connection,
778  OpalConnection::StringOptions & stringOptions
779  );
780 
796  virtual void OnProceeding(
797  OpalConnection & connection
798  );
799 
816  virtual void OnAlerting(
817  OpalConnection & connection,
818  bool withMedia
819  );
820  virtual void OnAlerting(OpalConnection & connection); // For backward compatibility
821 
838  virtual OpalConnection::AnswerCallResponse OnAnswerCall(
839  OpalConnection & connection,
840  const PString & caller
841  );
842 
854  virtual void OnConnected(
855  OpalConnection & connection
856  );
857 
871  virtual void OnEstablished(
872  OpalConnection & connection
873  );
874 
890  virtual void OnReleased(
891  OpalConnection & connection
892  );
893 
900  virtual void OnHold(
901  OpalConnection & connection,
902  bool fromRemote,
903  bool onHold
904  );
905  virtual void OnHold(OpalConnection & connection); // For backward compatibility
906 
911  virtual PBoolean OnForwarded(
912  OpalConnection & connection,
913  const PString & remoteParty
914  );
915 
961  virtual bool OnTransferNotify(
962  OpalConnection & connection,
963  const PStringToString & info
964  );
966 
967 
978  bool transportable,
979  bool pcmAudio
980  ) const;
981 
991  virtual void AdjustMediaFormats(
992  bool local,
993  const OpalConnection & connection,
994  OpalMediaFormatList & mediaFormats
995  ) const;
996 
998  P_DECLARE_TRACED_ENUM(MediaTransferMode,
999  MediaTransferBypass,
1002  MediaTransferForward,
1005  MediaTransferTranscode
1008  );
1009 
1022  virtual MediaTransferMode GetMediaTransferMode(
1023  const OpalConnection & provider,
1024  const OpalConnection & consumer,
1025  const OpalMediaType & mediaType
1026  ) const;
1027 
1046  virtual bool GetMediaTransportAddresses(
1047  const OpalConnection & provider,
1048  const OpalConnection & consumer,
1049  unsigned sessionId,
1050  const OpalMediaType & mediaType,
1051  OpalTransportAddressArray & transports
1052  ) const;
1053 
1069  virtual PBoolean OnOpenMediaStream(
1070  OpalConnection & connection,
1071  OpalMediaStream & stream
1072  );
1073 
1090  virtual bool OnLocalRTP(
1091  OpalConnection & connection1,
1092  OpalConnection & connection2,
1093  unsigned sessionID,
1094  bool opened
1095  ) const;
1096 
1122  bool SetMediaPassThrough(
1123  const PString & token1,
1124  const PString & token2,
1125  bool bypass,
1126  unsigned sessionID = 0,
1127  bool network = true
1128  );
1129  static bool SetMediaPassThrough(
1130  OpalConnection & connection1,
1131  OpalConnection & connection2,
1132  bool bypass,
1133  unsigned sessionID = 0
1134  );
1135 
1140  virtual void OnClosedMediaStream(
1141  const OpalMediaStream & stream
1142  );
1143 
1148  virtual void OnFailedMediaStream(
1149  OpalConnection & connection,
1150  bool fromRemote,
1151  const PString & reason
1152  );
1153 
1154 #if OPAL_VIDEO
1155 
1157  virtual PBoolean CreateVideoInputDevice(
1158  const OpalConnection & connection,
1159  const OpalMediaFormat & mediaFormat,
1160  PVideoInputDevice * & device,
1161  PBoolean & autoDelete
1162  );
1163 
1167  virtual PBoolean CreateVideoOutputDevice(
1168  const OpalConnection & connection,
1169  const OpalMediaFormat & mediaFormat,
1170  PBoolean preview,
1171  PVideoOutputDevice * & device,
1172  PBoolean & autoDelete
1173  );
1174 
1177  virtual bool CreateVideoInputDevice(
1178  const OpalConnection & connection,
1179  const PVideoDevice::OpenArgs & args,
1180  PVideoInputDevice * & device,
1181  PBoolean & autoDelete
1182  );
1183 
1187  virtual bool CreateVideoOutputDevice(
1188  const OpalConnection & connection,
1189  const PVideoDevice::OpenArgs & args,
1190  PVideoOutputDevice * & device,
1191  PBoolean & autoDelete
1192  );
1193 #endif // OPAL_VIDEO
1194 
1202  virtual OpalMediaPatch * CreateMediaPatch(
1203  OpalMediaStream & source,
1204  PBoolean requiresPatchThread = true
1205  );
1206 
1213  virtual void OnStartMediaPatch(
1214  OpalConnection & connection,
1215  OpalMediaPatch & patch
1216  );
1217 
1220  virtual void OnStopMediaPatch(
1221  OpalConnection & connection,
1222  OpalMediaPatch & patch
1223  );
1224 
1240  virtual bool OnMediaFailed(
1241  OpalConnection & connection,
1242  unsigned sessionId
1243  );
1245 
1246 
1254  virtual void OnUserInputString(
1255  OpalConnection & connection,
1256  const PString & value
1257  );
1258 
1273  virtual void OnUserInputTone(
1274  OpalConnection & connection,
1275  char tone,
1276  int duration
1277  );
1278 
1281  virtual PString ReadUserInput(
1282  OpalConnection & connection,
1283  const char * terminators = "YX#\r\n",
1284  unsigned lastDigitTimeout = 4,
1285  unsigned firstDigitTimeout = 30
1286  );
1288 
1289 
1290 #if OPAL_HAS_MIXER
1291 
1301  virtual PBoolean StartRecording(
1302  const PString & callToken,
1303  const PFilePath & filename,
1304  const OpalRecordManager::Options & options = false
1305  );
1306 
1309  virtual bool IsRecording(
1310  const PString & callToken
1311  );
1312 
1317  virtual bool StopRecording(
1318  const PString & callToken
1319  );
1320 
1322 #endif
1323 
1324 
1325 #if OPAL_HAS_IM
1326 
1331  virtual void OnConversation(
1332  const OpalIMContext::ConversationInfo & info
1333  );
1334 
1344  virtual PBoolean Message(
1345  OpalIM & message
1346  );
1347 
1349  virtual PBoolean Message(
1350  const PString & to,
1351  const PString & body
1352  );
1353 
1355  virtual PBoolean Message(
1356  const PURL & to,
1357  const PString & type,
1358  const PString & body,
1359  PURL & from,
1360  PString & conversationId
1361  );
1362 
1368  virtual void OnMessageReceived(
1369  const OpalIM & message
1370  );
1371 
1376  virtual void OnMessageDisposition(
1377  const OpalIMContext::DispositionInfo & info
1378  );
1379 
1384  virtual void OnCompositionIndication(
1385  const OpalIMContext::CompositionInfo & info
1386  );
1388 #endif
1389 
1390 
1393  enum MessageWaitingType {
1402  };
1403 
1414  virtual void OnMWIReceived(
1415  const PString & party,
1416  MessageWaitingType type,
1417  const PString & extraInfo
1418  );
1419 
1434  virtual bool GetConferenceStates(
1435  OpalConferenceStates & states,
1436  const PString & name = PString::Empty()
1437  ) const;
1438 
1448  virtual void OnConferenceStatusChanged(
1449  OpalEndPoint & endpoint,
1450  const PString & uri,
1452  );
1453 
1461  virtual bool OnChangedPresentationRole(
1462  OpalConnection & connection,
1463  const PString & newChairURI,
1464  bool request
1465  );
1467 
1468 
1471 #if OPAL_PTLIB_SSL
1472 
1484  virtual bool ApplySSLCredentials(
1485  const OpalEndPoint & ep,
1486  PSSLContext & context,
1487  bool create
1488  ) const;
1489 
1492  const PString & GetSSLCertificateAuthorityFiles() const { return m_caFiles; }
1493 
1496  void SetSSLCertificateAuthorityFiles(const PString & files) { m_caFiles = files; }
1497 
1500  const PString & GetSSLCertificateFile() const { return m_certificateFile; }
1501 
1504  void SetSSLCertificateFile(const PString & file) { m_certificateFile = file; }
1505 
1508  const PString & GetSSLPrivateKeyFile() const { return m_privateKeyFile; }
1509 
1512  void SetSSLPrivateKeyFile(const PString & file) { m_privateKeyFile = file; }
1513 
1516  void SetSSLAutoCreateCertificate(bool yes) { m_autoCreateCertificate = yes; }
1517 
1520  bool GetSSLAutoCreateCertificate() const { return m_autoCreateCertificate; }
1521 #endif
1522 
1530  virtual PBoolean IsLocalAddress(
1531  const PIPSocket::Address & remoteAddress
1532  ) const;
1533 
1551  virtual PBoolean IsRTPNATEnabled(
1552  OpalConnection & connection,
1553  const PIPSocket::Address & localAddr,
1554  const PIPSocket::Address & peerAddr,
1555  const PIPSocket::Address & signalAddr,
1556  PBoolean incoming
1557  );
1558 
1565  virtual PBoolean TranslateIPAddress(
1566  PIPSocket::Address & localAddress,
1567  const PIPSocket::Address & remoteAddress
1568  );
1569 
1570 #if OPAL_PTLIB_NAT
1571 
1573  PNatMethods & GetNatMethods() const { return *m_natMethods; }
1574 
1577  bool SetNATServer(
1578  const PString & method,
1579  const PString & server,
1580  bool active = true,
1581  unsigned priority = 0, // Zero is no change
1582  const PString & iface = PString::Empty() // Any interface
1583  );
1584 
1587  PString GetNATServer(
1588  const PString & method = PString::Empty()
1589  ) const;
1590 
1591  // Backward compatibility
1592  void SetTranslationAddress(const PString & addr) { SetNATServer(PNatMethod_Fixed::MethodName(), addr); }
1593 #if P_STUN
1594  PNatMethod::NatTypes SetSTUNServer(const PString & addr)
1595  { return SetNATServer(PSTUNClient::MethodName(), addr) ? GetNatMethods().GetMethodByName(PSTUNClient::MethodName())->GetNatType() : PNatMethod::UnknownNat; }
1596 #endif // P_STUN
1597 #endif // OPAL_PTLIB_NAT
1598 
1601  WORD GetTCPPortBase() const { return m_tcpPorts.GetBase(); }
1602 
1605  WORD GetTCPPortMax() const { return m_tcpPorts.GetMax(); }
1606 
1609  void SetTCPPorts(unsigned tcpBase, unsigned tcpMax);
1610 
1613  PIPSocket::PortRange & GetTCPPortRange() { return m_tcpPorts; }
1614  const PIPSocket::PortRange & GetTCPPortRange() const { return m_tcpPorts; }
1615 
1618  WORD GetUDPPortBase() const { return m_udpPorts.GetBase(); }
1619 
1622  WORD GetUDPPortMax() const { return m_udpPorts.GetMax(); }
1623 
1624 
1627  void SetUDPPorts(unsigned udpBase, unsigned udpMax);
1628 
1631  PIPSocket::PortRange & GetUDPPortRange() { return m_udpPorts; }
1632  const PIPSocket::PortRange & GetUDPPortRange() const { return m_udpPorts; }
1633 
1636  WORD GetRtpIpPortBase() const { return m_rtpIpPorts.GetBase(); }
1637 
1640  WORD GetRtpIpPortMax() const { return m_rtpIpPorts.GetMax(); }
1641 
1644  void SetRtpIpPorts(unsigned udpBase, unsigned udpMax);
1645 
1648  PIPSocket::PortRange & GetRtpIpPortRange() { return m_rtpIpPorts; }
1649  const PIPSocket::PortRange & GetRtpIpPortRange() const { return m_rtpIpPorts; }
1650 
1653  BYTE GetMediaTypeOfService() const;
1654 
1657  void SetMediaTypeOfService(unsigned tos);
1658 
1661  BYTE GetMediaTypeOfService(const OpalMediaType & type) const;
1662 
1665  void SetMediaTypeOfService(const OpalMediaType & type, unsigned tos);
1666 
1669  const PIPSocket::QoS & GetMediaQoS(const OpalMediaType & type) const;
1670 
1673  void SetMediaQoS(const OpalMediaType & type, const PIPSocket::QoS & qos);
1674 
1679  PINDEX GetMaxRtpPayloadSize() const { return m_rtpPayloadSizeMax; }
1680 
1686  PINDEX size,
1687  bool mtu = false
1688  ) { m_rtpPayloadSizeMax = size - (mtu ? (20+16+12) : 0); }
1689 
1693  PINDEX GetMaxRtpPacketSize() const { return m_rtpPacketSizeMax; }
1694 
1699  PINDEX size
1700  ) { m_rtpPacketSizeMax = size; }
1702 
1703 
1708  const OpalProductInfo & GetProductInfo() const { return m_productInfo; }
1709 
1712  void SetProductInfo(
1713  const OpalProductInfo & info,
1714  bool updateAll = true
1715  );
1716 
1719  const PString & GetDefaultUserName() const { return m_defaultUserName; }
1720 
1723  void SetDefaultUserName(
1724  const PString & name,
1725  bool updateAll = true
1726  );
1727 
1730  const PString & GetDefaultDisplayName() const { return m_defaultDisplayName; }
1731 
1734  void SetDefaultDisplayName(
1735  const PString & name,
1736  bool updateAll = true
1737  );
1738 
1744  const OpalConnection::StringOptions & stringOptions
1745  ) { m_defaultConnectionOptions = stringOptions; }
1746 
1747 #if OPAL_VIDEO
1748 
1749  //
1750  // these functions are deprecated and used only for backwards compatibility
1751  // applications should use OpalConnection::GetAutoStart() to check whether
1752  // a specific media type can be auto-started
1753  //
1754 
1757  bool CanAutoStartReceiveVideo() const { return (OpalMediaType::Video().GetAutoStart()&OpalMediaType::Receive) != 0; }
1758 
1761  void SetAutoStartReceiveVideo(bool can) { OpalMediaType::Video()->SetAutoStart(OpalMediaType::Receive, can); }
1762 
1765  bool CanAutoStartTransmitVideo() const { return (OpalMediaType::Video().GetAutoStart()&OpalMediaType::Transmit) != 0; }
1766 
1769  void SetAutoStartTransmitVideo(bool can) { OpalMediaType::Video()->SetAutoStart(OpalMediaType::Transmit, can); }
1770 
1771 #endif
1772 
1776 
1780 
1785 
1790 
1800  void SetAudioJitterDelay(
1801  unsigned minDelay,
1802  unsigned maxDelay
1803  );
1804 
1807  const PStringArray & GetMediaFormatOrder() const { return m_mediaFormatOrder; }
1808 
1811  void SetMediaFormatOrder(
1812  const PStringArray & order
1813  );
1814 
1820  const PStringArray & GetMediaFormatMask() const { return m_mediaFormatMask; }
1821 
1827  void SetMediaFormatMask(
1828  const PStringArray & mask //< New mask
1829  );
1830 
1834  const OpalSilenceDetector::Params & params
1835  ) { m_silenceDetectParams = params; }
1836 
1840 
1841 #if OPAL_AEC
1842 
1844  virtual void SetEchoCancelParams(
1845  const OpalEchoCanceler::Params & params
1846  ) { m_echoCancelParams = params; }
1847 
1850  const OpalEchoCanceler::Params & GetEchoCancelParams() const { return m_echoCancelParams; }
1851 #endif
1852 
1853 #if OPAL_VIDEO
1854 
1859  virtual bool SetVideoInputDevice(
1860  const PVideoDevice::OpenArgs & deviceArgs,
1861  OpalVideoFormat::ContentRole role = OpalVideoFormat::eNoRole
1862  );
1863 
1866  const PVideoDevice::OpenArgs & GetVideoInputDevice(
1867  OpalVideoFormat::ContentRole role = OpalVideoFormat::eNoRole
1868  ) const { return m_videoInputDevice[role]; }
1869 
1877  virtual PBoolean SetVideoPreviewDevice(
1878  const PVideoDevice::OpenArgs & deviceArgs,
1879  OpalVideoFormat::ContentRole role = OpalVideoFormat::eNoRole
1880  );
1881 
1885  const PVideoDevice::OpenArgs & GetVideoPreviewDevice(
1886  OpalVideoFormat::ContentRole role = OpalVideoFormat::eNoRole
1887  ) const { return m_videoPreviewDevice[role]; }
1888 
1896  virtual PBoolean SetVideoOutputDevice(
1897  const PVideoDevice::OpenArgs & deviceArgs,
1898  OpalVideoFormat::ContentRole role = OpalVideoFormat::eNoRole
1899  );
1900 
1904  const PVideoDevice::OpenArgs & GetVideoOutputDevice(
1905  OpalVideoFormat::ContentRole role = OpalVideoFormat::eNoRole
1906  ) const { return m_videoOutputDevice[role]; }
1907 
1908 #endif
1909 
1910  PBoolean DetectInBandDTMFDisabled() const
1911  { return m_disableDetectInBandDTMF; }
1912 
1916  PBoolean mode
1917  ) { m_disableDetectInBandDTMF = mode; }
1918 
1921  const PTimeInterval & GetNoMediaTimeout() const { return m_noMediaTimeout; }
1922 
1926  const PTimeInterval & newInterval
1927  ) { m_noMediaTimeout = newInterval; }
1928 
1931  const PTimeInterval & GetTxMediaTimeout() const { return m_txMediaTimeout; }
1932 
1936  const PTimeInterval & newInterval
1937  ) { m_txMediaTimeout = newInterval; }
1938 
1941  const PTimeInterval & GetSignalingTimeout() const { return m_signalingTimeout; }
1942 
1946  const PTimeInterval & newInterval
1947  ) { m_signalingTimeout = newInterval; }
1948 
1951  const PTimeInterval & GetTransportIdleTime() const { return m_transportIdleTime; }
1952 
1956  const PTimeInterval & newInterval
1957  ) { m_transportIdleTime = newInterval; }
1958 
1961  const PTimeInterval & GetNatKeepAliveTime() const { return m_natKeepAliveTime; }
1962 
1966  const PTimeInterval & newInterval
1967  ) { m_natKeepAliveTime = newInterval; }
1968 
1969 #if OPAL_ICE
1970 
1972  const PTimeInterval & GetICETimeout() const { return m_iceTimeout; }
1973 
1976  void SetICETimeout(
1977  const PTimeInterval & newInterval
1978  ) { m_iceTimeout = newInterval; }
1979 #endif // OPAL_ICE
1980 
1983  const PTimeInterval & GetStaleReceiverTimeout() const { return m_staleReceiverTimeout; }
1984 
1988  const PTimeInterval & newInterval
1989  ) { m_staleReceiverTimeout = newInterval; }
1990 
1991 #if OPAL_SRTP
1992 
1994  const PTimeInterval & GetDTLSTimeout() const { return m_dtlsTimeout; }
1995 
1998  void SetDTLSTimeout(
1999  const PTimeInterval & newInterval
2000  ) { m_dtlsTimeout = newInterval; }
2001 #endif // OPAL_SRTP
2002 
2005  const PString & GetDefaultILSServer() const { return m_ilsServer; }
2006 
2010  const PString & server
2011  ) { m_ilsServer = server; }
2012 
2013 #if OPAL_SCRIPT
2014 
2059  PScriptLanguage * GetScript() const { return m_script; }
2060 
2063  bool RunScript(
2064  const PString & script,
2065  const char * language = "Lua"
2066  );
2067 #endif // OPAL_SCRIPT
2068 
2069 
2070  // needs to be public for gcc 3.4
2071  void GarbageCollection();
2072 
2073  // Decoupled event to avoid deadlocks, especially from patch threads
2074  void QueueDecoupledEvent(PSafeWork * work, const char * group = NULL) { m_decoupledEventPool.AddWork(work, group); }
2075 
2076  typedef std::map<OpalMediaType, PIPSocket::QoS> MediaQoSMap;
2077 
2078  protected:
2079  // Configuration variables
2081 
2084 
2086 
2088 
2092  PStringArray m_mediaFormatOrder;
2093  PStringArray m_mediaFormatMask;
2095  PTimeInterval m_noMediaTimeout;
2096  PTimeInterval m_txMediaTimeout;
2097  PTimeInterval m_signalingTimeout;
2098  PTimeInterval m_transportIdleTime;
2099  PTimeInterval m_natKeepAliveTime;
2100 #if OPAL_ICE
2101  PTimeInterval m_iceTimeout;
2102 #endif
2103  PTimeInterval m_staleReceiverTimeout;
2104 #if OPAL_SRTP
2105  PTimeInterval m_dtlsTimeout;
2106 #endif
2107  PString m_ilsServer;
2108 
2110 #if OPAL_AEC
2111  OpalEchoCanceler::Params m_echoCancelParams;
2112 #endif
2113 
2114 #if OPAL_VIDEO
2115  PVideoDevice::OpenArgs m_videoInputDevice[OpalVideoFormat::NumContentRole];
2116  PVideoDevice::OpenArgs m_videoPreviewDevice[OpalVideoFormat::NumContentRole];
2117  PVideoDevice::OpenArgs m_videoOutputDevice[OpalVideoFormat::NumContentRole];
2118 #endif
2119 
2120  PIPSocket::PortRange m_tcpPorts, m_udpPorts, m_rtpIpPorts;
2121 
2122 #if OPAL_PTLIB_SSL
2123  PString m_caFiles;
2124  PFilePath m_certificateFile;
2125  PFilePath m_privateKeyFile;
2126  bool m_autoCreateCertificate;
2127 #endif
2128 
2129 #if OPAL_PTLIB_NAT
2130  PNatMethods * m_natMethods;
2131  PDECLARE_InterfaceNotifier(OpalManager, OnInterfaceChange);
2132  PInterfaceMonitor::Notifier m_onInterfaceChange;
2133 #endif
2134 
2135  RouteTable m_routeTable;
2136  PDECLARE_MUTEX(m_routeMutex);
2137 
2138  // Dynamic variables
2139  PDECLARE_READ_WRITE_MUTEX(m_endpointsMutex);
2140  PList<OpalEndPoint> m_endpointList;
2141  std::map<PString, OpalEndPoint *> m_endpointMap;
2142 
2143  atomic<unsigned> lastCallTokenID;
2144 
2145  class CallDict : public PSafeDictionary<PString, OpalCall>
2146  {
2147  public:
2148  CallDict(OpalManager & mgr) : manager(mgr) { }
2149  virtual void DeleteObject(PObject * object) const;
2151  } m_activeCalls;
2152 
2153 #if OPAL_HAS_PRESENCE
2154  PSafeDictionary<PString, OpalPresentity> m_presentities;
2155 #endif // OPAL_HAS_PRESENCE
2156 
2157  atomic<PINDEX> m_clearingAllCallsCount;
2158  PDECLARE_MUTEX(m_clearingAllCallsMutex);
2159  PSyncPoint m_allCallsCleared;
2160  void InternalClearAllCalls(OpalConnection::CallEndReason reason, bool wait, bool first);
2161 
2165  PDECLARE_NOTIFIER(PThread, OpalManager, GarbageMain);
2166 
2167  friend OpalCall::OpalCall(OpalManager & mgr);
2168  friend void OpalCall::InternalOnClear();
2169 
2170  PSafeThreadPool m_decoupledEventPool;
2171 
2172 #if OPAL_SCRIPT
2173  PScriptLanguage * m_script;
2174 #endif
2175 
2176  private:
2177  P_REMOVE_VIRTUAL(OpalCall *,CreateCall(), 0);
2178  P_REMOVE_VIRTUAL(PBoolean, OnIncomingConnection(OpalConnection &, unsigned), false);
2179  P_REMOVE_VIRTUAL(PBoolean, OnIncomingConnection(OpalConnection &), false);
2180  P_REMOVE_VIRTUAL(PBoolean, OnStartMediaPatch(const OpalMediaPatch &), false);
2181  P_REMOVE_VIRTUAL_VOID(AdjustMediaFormats(const OpalConnection &, OpalMediaFormatList &) const);
2182  P_REMOVE_VIRTUAL_VOID(OnMessageReceived(const PURL&,const PString&,const PURL&,const PString&,const PString&,const PString&));
2183  P_REMOVE_VIRTUAL_VOID(OnRTPStatistics(const OpalConnection &, const OpalRTPSession &));
2184  P_REMOVE_VIRTUAL(PBoolean, IsMediaBypassPossible(const OpalConnection &,const OpalConnection &,unsigned) const, false);
2185 #if OPAL_PTLIB_NAT
2186  P_REMOVE_VIRTUAL(PNatMethod *, GetNatMethod(const PIPSocket::Address &) const, NULL);
2187 #endif
2188  P_REMOVE_VIRTUAL(bool,OnLocalIncomingCall(OpalCall &),false);
2189  P_REMOVE_VIRTUAL(bool,OnLocalOutgoingCall(OpalCall &),false);
2190  P_REMOVE_VIRTUAL(bool,OnMediaFailed(OpalConnection &,unsigned,bool),false);
2191 };
2192 
2193 
2194 void OpalGetVersion(PProcess::VersionInfo version);
2195 PString OpalGetVersion();
2196 
2197 
2198 #endif // OPAL_OPAL_MANAGER_H
2199 
2200 
2201 // End of File ///////////////////////////////////////////////////////////////
void GarbageCollection()
const PIPSocket::PortRange & GetUDPPortRange() const
Definition: manager.h:1632
Definition: silencedetect.h:54
PStringSet m_roles
Role for user, e.g. &quot;participant&quot;.
Definition: manager.h:115
virtual void OnApplyStringOptions(OpalConnection &connection, OpalConnection::StringOptions &stringOptions)
void SetTxMediaTimeout(const PTimeInterval &newInterval)
Definition: manager.h:1935
virtual bool OnLocalIncomingCall(OpalLocalConnection &connection)
bool m_active
Conference is active and can accept incoming connections.
Definition: manager.h:91
Definition: manager.h:150
virtual PBoolean StartRecording(const PString &callToken, const PFilePath &filename, const OpalRecordManager::Options &options=false)
Definition: endpoint.h:65
virtual void OnClearedCall(OpalCall &call)
void SetAutoStartTransmitVideo(bool can)
Definition: manager.h:1769
PINDEX GetCallCount() const
Definition: manager.h:330
virtual void OnConnected(OpalConnection &connection)
Definition: manager.h:77
PString m_defaultUserName
Definition: manager.h:2082
bool SetMediaPassThrough(const PString &token1, const PString &token2, bool bypass, unsigned sessionID=0, bool network=true)
CallDict(OpalManager &mgr)
Definition: manager.h:2148
void SetNoMediaTimeout(const PTimeInterval &newInterval)
Definition: manager.h:1925
MediaQoSMap m_mediaQoS
Definition: manager.h:2085
virtual PSafePtr< OpalCall > SetUpCall(const PString &partyA, const PString &partyB, void *userData=NULL, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
const PIPSocket::QoS & GetMediaQoS(const OpalMediaType &type) const
PTimeInterval m_signalingTimeout
Definition: manager.h:2097
bool CanAutoStartReceiveVideo() const
Definition: manager.h:1757
void SetUDPPorts(unsigned udpBase, unsigned udpMax)
PINDEX GetMaxRtpPacketSize() const
Definition: manager.h:1693
virtual void OnConversation(const OpalIMContext::ConversationInfo &info)
const PString & GetDestination() const
Definition: manager.h:504
const PString & GetDefaultILSServer() const
Definition: manager.h:2005
const PVideoDevice::OpenArgs & GetVideoInputDevice(OpalVideoFormat::ContentRole role=OpalVideoFormat::eNoRole) const
Definition: manager.h:1866
virtual PBoolean AddRouteEntry(const PString &spec)
Definition: manager.h:80
const PVideoDevice::OpenArgs & GetVideoOutputDevice(OpalVideoFormat::ContentRole role=OpalVideoFormat::eNoRole) const
Definition: manager.h:1904
Definition: manager.h:94
virtual void OnMessageDisposition(const OpalIMContext::DispositionInfo &info)
void SetStaleReceiverTimeout(const PTimeInterval &newInterval)
Definition: manager.h:1987
PIPSocket::PortRange & GetUDPPortRange()
Definition: manager.h:1631
PArray< PString > GetAllCalls() const
Definition: manager.h:334
Definition: localep.h:469
virtual void OnHold(OpalConnection &connection, bool fromRemote, bool onHold)
const PStringArray & GetMediaFormatMask() const
Definition: manager.h:1820
void SetTCPPorts(unsigned tcpBase, unsigned tcpMax)
std::map< OpalMediaType, PIPSocket::QoS > MediaQoSMap
Definition: manager.h:2076
Definition: manager.h:489
virtual PBoolean ClearCallSynchronous(const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser)
PVideoDevice::OpenArgs m_videoOutputDevice[OpalVideoFormat::NumContentRole]
Definition: manager.h:2117
const PIPSocket::PortRange & GetRtpIpPortRange() const
Definition: manager.h:1649
PSafePtr< OpalCall > FindCallWithLock(const PString &token, PSafetyMode mode=PSafeReadWrite) const
Definition: manager.h:344
virtual void SetSilenceDetectParams(const OpalSilenceDetector::Params &params)
Definition: manager.h:1833
Definition: manager.h:1397
virtual bool IsRecording(const PString &callToken)
PTimeInterval m_txMediaTimeout
Definition: manager.h:2096
void SetProductInfo(const OpalProductInfo &info, bool updateAll=true)
atomic< unsigned > lastCallTokenID
Definition: manager.h:2143
bool IsMatch(const PString &search) const
static const OpalMediaType & Video()
void SetRtpIpPorts(unsigned udpBase, unsigned udpMax)
Definition: mediatype.h:66
void SetAutoStart(OpalMediaType::AutoStartMode v)
Definition: mediatype.h:171
atomic< PINDEX > m_clearingAllCallsCount
Definition: manager.h:2157
const PTimeInterval & GetNatKeepAliveTime() const
Definition: manager.h:1961
PDECLARE_NOTIFIER(PThread, OpalManager, GarbageMain)
virtual void ClearAllCalls(OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PBoolean wait=true)
void SetAutoStartReceiveVideo(bool can)
Definition: manager.h:1761
Definition: manager.h:1400
void DetachEndPoint(const PString &prefix)
virtual void OnFailedMediaStream(OpalConnection &connection, bool fromRemote, const PString &reason)
PString m_purpose
Definition: manager.h:98
virtual bool OnLocalRTP(OpalConnection &connection1, OpalConnection &connection2, unsigned sessionID, bool opened) const
void SetSignalingTimeout(const PTimeInterval &newInterval)
Definition: manager.h:1945
Definition: jitter.h:55
virtual bool OnRouteConnection(PStringSet &routesTried, const PString &a_party, const PString &b_party, OpalCall &call, unsigned options, OpalConnection::StringOptions *stringOptions)
PString m_destination
URL we map above to, with macro substitutions.
Definition: manager.h:509
OpalSilenceDetector::Params m_silenceDetectParams
Definition: manager.h:2109
const PString & GetPartyB() const
Definition: manager.h:503
virtual void OnMWIReceived(const PString &party, MessageWaitingType type, const PString &extraInfo)
virtual bool OnChangedPresentationRole(OpalConnection &connection, const PString &newChairURI, bool request)
PString m_keywords
Space separated list of keywords for conference.
Definition: manager.h:90
virtual void OnStartMediaPatch(OpalConnection &connection, OpalMediaPatch &patch)
virtual PString GetNextToken(char prefix)
PObject * Clone() const
Definition: manager.h:496
PTimeInterval m_transportIdleTime
Definition: manager.h:2098
RouteEntry(const PString &partyA, const PString &partyB, const PString &dest)
const PString & GetDefaultDisplayName() const
Definition: manager.h:1730
virtual void OnUserInputTone(OpalConnection &connection, char tone, int duration)
Definition: manager.h:79
OpalProductInfo m_productInfo
Definition: manager.h:2080
void SetMaxRtpPayloadSize(PINDEX size, bool mtu=false)
Definition: manager.h:1685
PString m_uri
URI that the user used to access this conference.
Definition: manager.h:113
unsigned m_minJitterDelay
Minimum delay in milliseconds.
Definition: jitter.h:57
virtual PBoolean IsLocalAddress(const PIPSocket::Address &remoteAddress) const
Definition: im.h:75
PINDEX m_rtpPacketSizeMax
Definition: manager.h:2090
PString m_displayText
Human readable form of resource.
Definition: manager.h:97
Definition: manager.h:1395
void SetDefaultConnectionOptions(const OpalConnection::StringOptions &stringOptions)
Definition: manager.h:1743
virtual PStringList GetNetworkURIs(const PString &name) const
virtual void DeleteObject(PObject *object) const
PIPSocket::PortRange m_udpPorts
Definition: manager.h:2120
virtual void OnUserInputString(OpalConnection &connection, const PString &value)
virtual PBoolean CreateVideoInputDevice(const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, PBoolean &autoDelete)
bool m_disableDetectInBandDTMF
Definition: manager.h:2094
void InternalClearAllCalls(OpalConnection::CallEndReason reason, bool wait, bool first)
PString m_subject
Subject for conference.
Definition: manager.h:88
virtual PSafePtr< OpalConnection > MakeConnection(OpalCall &call, const PString &party, void *userData=NULL, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)
URIs m_serviceURI
Definition: manager.h:105
virtual void OnStopMediaPatch(OpalConnection &connection, OpalMediaPatch &patch)
const OpalProductInfo & GetProductInfo() const
Definition: manager.h:1708
OpalCall * InternalCreateCall(void *userData=NULL)
PIPSocket::PortRange & GetTCPPortRange()
Definition: manager.h:1613
virtual void OnConferenceStatusChanged(OpalEndPoint &endpoint, const PString &uri, OpalConferenceState::ChangeType change)
virtual PBoolean IsCallEstablished(const PString &token)
Definition: mediafmt.h:112
PINDEX m_rtpPayloadSizeMax
Definition: manager.h:2089
const PStringArray & GetMediaFormatOrder() const
Definition: manager.h:1807
Definition: manager.h:1399
void SetMediaFormatOrder(const PStringArray &order)
virtual void OnAlerting(OpalConnection &connection, bool withMedia)
Definition: connection.h:530
const PVideoDevice::OpenArgs & GetVideoPreviewDevice(OpalVideoFormat::ContentRole role=OpalVideoFormat::eNoRole) const
Definition: manager.h:1885
WORD GetUDPPortBase() const
Definition: manager.h:1618
PIPSocket::PortRange m_rtpIpPorts
Definition: manager.h:2120
PTimeInterval m_staleReceiverTimeout
Definition: manager.h:2103
virtual PBoolean Message(OpalIM &message)
Send an Instant Message to a remote party. Backward compatible to old API.
OpalCall(OpalManager &manager)
void SetTransportIdleTime(const PTimeInterval &newInterval)
Definition: manager.h:1955
void ShutDownEndpoints()
WORD GetTCPPortBase() const
Definition: manager.h:1601
virtual void OnProceeding(OpalConnection &connection)
Definition: patch.h:56
P_DECLARE_TRACED_ENUM(MediaTransferMode, MediaTransferBypass, MediaTransferForward, MediaTransferTranscode)
How to handle media between two &quot;network&quot; connections.
MessageWaitingType
Message waiting sub-types.
Definition: manager.h:1394
PIPSocket::PortRange m_tcpPorts
Definition: manager.h:2120
virtual void OnClosedMediaStream(const OpalMediaStream &stream)
Definition: manager.h:1396
virtual bool OnTransferNotify(OpalConnection &connection, const PStringToString &info)
virtual bool OnLocalOutgoingCall(const OpalLocalConnection &connection)
virtual PString ReadUserInput(OpalConnection &connection, const char *terminators="YX#\r\n", unsigned lastDigitTimeout=4, unsigned firstDigitTimeout=30)
virtual PBoolean ClearCall(const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL)
Definition: mediafmt.h:806
PSyncPoint m_garbageCollectExit
Definition: manager.h:2163
void SetDefaultUserName(const PString &name, bool updateAll=true)
PStringArray m_mediaFormatMask
Definition: manager.h:2093
void SetNatKeepAliveTime(const PTimeInterval &newInterval)
Definition: manager.h:1965
T * FindEndPointAs(const PString &prefix) const
Definition: manager.h:199
PDECLARE_READ_WRITE_MUTEX(m_endpointsMutex)
PTimeInterval m_noMediaTimeout
Definition: manager.h:2095
const PTimeInterval & GetNoMediaTimeout() const
Definition: manager.h:1921
virtual OpalMediaPatch * CreateMediaPatch(OpalMediaStream &source, PBoolean requiresPatchThread=true)
Definition: call.h:62
virtual PBoolean OnIncomingConnection(OpalConnection &connection, unsigned options, OpalConnection::StringOptions *stringOptions)
PARRAY(RouteTable, RouteEntry)
virtual PBoolean SetVideoPreviewDevice(const PVideoDevice::OpenArgs &deviceArgs, OpalVideoFormat::ContentRole role=OpalVideoFormat::eNoRole)
PRegularExpression m_regex
Compiled Regular expression from pattern.
Definition: manager.h:510
WORD GetTCPPortMax() const
Definition: manager.h:1605
virtual OpalMediaFormatList GetCommonMediaFormats(bool transportable, bool pcmAudio) const
PVideoDevice::OpenArgs m_videoInputDevice[OpalVideoFormat::NumContentRole]
Definition: manager.h:2115
virtual PBoolean IsRTPNATEnabled(OpalConnection &connection, const PIPSocket::Address &localAddr, const PIPSocket::Address &peerAddr, const PIPSocket::Address &signalAddr, PBoolean incoming)
PIPSocket::PortRange & GetRtpIpPortRange()
Definition: manager.h:1648
bool CanAutoStartTransmitVideo() const
Definition: manager.h:1765
PList< OpalEndPoint > m_endpointList
Definition: manager.h:2140
Definition: manager.h:1398
const PIPSocket::PortRange & GetTCPPortRange() const
Definition: manager.h:1614
virtual void OnMessageReceived(const OpalIM &message)
Definition: rtp_session.h:90
WORD GetRtpIpPortMax() const
Definition: manager.h:1640
PSafeThreadPool m_decoupledEventPool
Definition: manager.h:2170
Definition: manager.h:1401
const OpalSilenceDetector::Params & GetSilenceDetectParams() const
Definition: manager.h:1839
PString m_ilsServer
Definition: manager.h:2107
PString m_uri
URI for access/service in conference.
Definition: manager.h:96
virtual PBoolean OnForwarded(OpalConnection &connection, const PString &remoteParty)
virtual bool GetMediaTransportAddresses(const OpalConnection &provider, const OpalConnection &consumer, unsigned sessionId, const OpalMediaType &mediaType, OpalTransportAddressArray &transports) const
void SetAudioJitterDelay(unsigned minDelay, unsigned maxDelay)
void OpalGetVersion(PProcess::VersionInfo version)
PBoolean DetectInBandDTMFDisabled() const
Definition: manager.h:1910
std::map< PString, OpalEndPoint * > m_endpointMap
Definition: manager.h:2141
const OpalJitterBuffer::Params & GetJitterParameters() const
Definition: manager.h:1775
WORD GetUDPPortMax() const
Definition: manager.h:1622
unsigned m_maxUsers
Maximum users that can join the conference.
Definition: manager.h:109
ChangeType
Definition: manager.h:76
void SetMediaQoS(const OpalMediaType &type, const PIPSocket::QoS &qos)
void InternalOnClear()
virtual OpalConnection::AnswerCallResponse OnAnswerCall(OpalConnection &connection, const PString &caller)
OpalConferenceState()
Definition: manager.h:70
void QueueDecoupledEvent(PSafeWork *work, const char *group=NULL)
Definition: manager.h:2074
Users m_users
Definition: manager.h:118
virtual void OnEstablished(OpalConnection &connection)
virtual void DestroyCall(OpalCall *call)
virtual MediaTransferMode GetMediaTransferMode(const OpalConnection &provider, const OpalConnection &consumer, const OpalMediaType &mediaType) const
virtual PBoolean CreateVideoOutputDevice(const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PBoolean preview, PVideoOutputDevice *&device, PBoolean &autoDelete)
PStringList GetPrefixNames(const OpalEndPoint *endpoint=NULL) const
PINDEX GetMaxRtpPayloadSize() const
Definition: manager.h:1679
void SetDefaultILSServer(const PString &server)
Definition: manager.h:2009
void AttachEndPoint(OpalEndPoint *endpoint, const PString &prefix=PString::Empty())
virtual PBoolean SetVideoOutputDevice(const PVideoDevice::OpenArgs &deviceArgs, OpalVideoFormat::ContentRole role=OpalVideoFormat::eNoRole)
PStringArray m_mediaFormatOrder
Definition: manager.h:2092
PTime m_garbageCollectChangeTime
Definition: manager.h:2164
Definition: connection.h:462
void SetDefaultDisplayName(const PString &name, bool updateAll=true)
OpalManager::CallDict m_activeCalls
const PString & GetPartyA() const
Definition: manager.h:502
void SetJitterParameters(const OpalJitterBuffer::Params &params)
Definition: manager.h:1779
PVideoDevice::OpenArgs m_videoPreviewDevice[OpalVideoFormat::NumContentRole]
Definition: manager.h:2116
Definition: manager.h:66
PString m_partyB
URL caller want to conect to.
Definition: manager.h:508
virtual void OnEstablishedCall(OpalCall &call)
virtual bool OnMediaFailed(OpalConnection &connection, unsigned sessionId)
OpalEndPoint * FindEndPoint(const PString &prefix) const
virtual void OnCompositionIndication(const OpalIMContext::CompositionInfo &info)
RouteTable m_routeTable
Definition: manager.h:2135
PTimeInterval m_natKeepAliveTime
Definition: manager.h:2099
const PTimeInterval & GetTransportIdleTime() const
Definition: manager.h:1951
void PrintOn(ostream &strm) const
Definition: manager.h:81
WORD GetRtpIpPortBase() const
Definition: manager.h:1636
virtual void OnNewConnection(OpalConnection &connection)
virtual PBoolean OnOpenMediaStream(OpalConnection &connection, OpalMediaStream &stream)
Definition: mediastrm.h:110
OpalManager & manager
Definition: manager.h:2150
PString m_displayText
Human readable text for conference name.
Definition: manager.h:87
virtual PString ApplyRouteTable(const PString &source, const PString &destination, PINDEX &entry)
Definition: manager.h:2145
virtual PBoolean TranslateIPAddress(PIPSocket::Address &localAddress, const PIPSocket::Address &remoteAddress)
virtual bool SetVideoInputDevice(const PVideoDevice::OpenArgs &deviceArgs, OpalVideoFormat::ContentRole role=OpalVideoFormat::eNoRole)
BYTE GetMediaTypeOfService() const
Definition: connection.h:415
std::list< OpalConferenceState > OpalConferenceStates
Definition: manager.h:131
URIs m_accessURI
All URIs that can access the conference.
Definition: manager.h:104
PString m_internalURI
Internal URI, e.g. mcu:5e6f7347-dcd6-e011-9853-0026b9b946a5.
Definition: manager.h:85
void SetMediaFormatMask(const PStringArray &mask)
PList< OpalEndPoint > GetEndPoints() const
PString m_displayText
Human readable form of users connection.
Definition: manager.h:114
std::vector< User > Users
Definition: manager.h:117
Definition: im.h:201
OpalConnection::StringOptions m_defaultConnectionOptions
Definition: manager.h:2087
virtual bool StopRecording(const PString &callToken)
Definition: im.h:270
virtual PBoolean HasCall(const PString &token)
Definition: manager.h:324
PDECLARE_MUTEX(m_routeMutex)
const PTimeInterval & GetTxMediaTimeout() const
Definition: manager.h:1931
Definition: transports.h:326
void SetMediaTypeOfService(unsigned tos)
unsigned GetMaxAudioJitterDelay() const
Definition: manager.h:1789
PString m_defaultDisplayName
Definition: manager.h:2083
const PString & GetDefaultUserName() const
Definition: manager.h:1719
PBoolean SetRouteTable(const PStringArray &specs)
Definition: manager.h:78
Definition: manager.h:111
friend ostream & operator<<(ostream &strm, ChangeType type)
PString m_partyA
URL of caller.
Definition: manager.h:507
unsigned GetMinAudioJitterDelay() const
Definition: manager.h:1784
PSyncPoint m_allCallsCleared
Definition: manager.h:2159
void DisableDetectInBandDTMF(PBoolean mode)
Definition: manager.h:1915
const RouteTable & GetRouteTable() const
Definition: manager.h:654
virtual bool SetUpConference(OpalCall &call, const char *mixerURI=NULL, const char *localURI=NULL)
const PTimeInterval & GetStaleReceiverTimeout() const
Definition: manager.h:1983
virtual void AdjustMediaFormats(bool local, const OpalConnection &connection, OpalMediaFormatList &mediaFormats) const
const PTimeInterval & GetSignalingTimeout() const
Definition: manager.h:1941
Definition: recording.h:84
virtual void OnReleased(OpalConnection &connection)
Definition: connection.h:358
unsigned m_maxJitterDelay
Maximum delay in milliseconds.
Definition: jitter.h:58
virtual bool GetConferenceStates(OpalConferenceStates &states, const PString &name=PString::Empty()) const
PString m_notes
Free text about conference.
Definition: manager.h:89
PThread * m_garbageCollector
Definition: manager.h:2162
void SetMaxRtpPacketSize(PINDEX size)
Definition: manager.h:1698
virtual OpalCall * CreateCall(void *userData)
bool m_locked
Conference cannot accept new participants.
Definition: manager.h:92
OpalJitterBuffer::Params m_jitterParams
Definition: manager.h:2091
std::vector< URI > URIs
Definition: manager.h:102