OPAL  Version 3.10.10
h323con.h
Go to the documentation of this file.
1 /*
2  * h323con.h
3  *
4  * H.323 protocol handler
5  *
6  * Open H323 Library
7  *
8  * Copyright (c) 1998-2001 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open H323 Library.
21  *
22  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23  *
24  * Portions of this code were written with the assisance of funding from
25  * Vovida Networks, Inc. http://www.vovida.com.
26  *
27  * Contributor(s): ______________________________________.
28  *
29  * $Revision: 28579 $
30  * $Author: rjongbloed $
31  * $Date: 2012-11-25 23:46:48 -0600 (Sun, 25 Nov 2012) $
32  */
33 
34 #ifndef OPAL_H323_H323CON_H
35 #define OPAL_H323_H323CON_H
36 
37 #ifdef P_USE_PRAGMA
38 #pragma interface
39 #endif
40 
41 #include <opal/buildopts.h>
42 
43 #if OPAL_H323
44 
45 #include <opal/rtpconn.h>
46 #include <opal/guid.h>
47 #include <opal/buildopts.h>
48 #include <h323/h323caps.h>
49 #include <ptclib/dtmf.h>
50 
51 
52 /* The following classes have forward references to avoid including the VERY
53  large header files for H225 and H245. If an application requires access
54  to the protocol classes they can include them, but for simple usage their
55  inclusion can be avoided.
56  */
57 class PPER_Stream;
58 class PASN_OctetString;
59 
60 class H225_EndpointType;
61 class H225_TransportAddress;
62 class H225_ArrayOf_PASN_OctetString;
63 class H225_ProtocolIdentifier;
64 class H225_AdmissionRequest;
65 class H225_AdmissionConfirm;
66 class H225_AdmissionReject;
67 class H225_InfoRequestResponse;
68 class H225_DisengageRequest;
69 class H225_FeatureSet;
70 
71 class H245_TerminalCapabilitySet;
72 class H245_TerminalCapabilitySetReject;
73 class H245_OpenLogicalChannel;
74 class H245_OpenLogicalChannelAck;
75 class H245_TransportAddress;
76 class H245_UserInputIndication;
77 class H245_RequestMode;
78 class H245_RequestModeAck;
79 class H245_RequestModeReject;
80 class H245_ModeDescription;
81 class H245_ArrayOf_ModeDescription;
82 class H245_SendTerminalCapabilitySet;
83 class H245_MultiplexCapability;
84 class H245_FlowControlCommand;
85 class H245_MiscellaneousCommand;
86 class H245_MiscellaneousIndication;
87 class H245_JitterIndication;
88 class H245_ArrayOf_GenericParameter;
89 
90 class H323SignalPDU;
91 class H323ControlPDU;
92 class H323EndPoint;
94 
95 class H235Authenticators;
96 
100 class H245NegRequestMode;
102 
103 class H450xDispatcher;
104 class H4502Handler;
105 class H4504Handler;
106 class H4506Handler;
107 class H4507Handler;
108 class H45011Handler;
109 
110 class OpalCall;
111 
112 #if OPAL_H460
113 class H460_FeatureSet;
114 #endif
115 
116 
119 #define OPAL_OPT_Q931_BEARER_CAPS "Q931-Bearer-Caps"
120 
121 
123 
131 {
132  PCLASSINFO(H323Connection, OpalRTPConnection);
133 
134  public:
140  OpalCall & call,
142  const PString & token,
143  const PString & alias,
144  const H323TransportAddress & address,
145  unsigned options = 0,
146  OpalConnection::StringOptions * stringOptions = NULL
147  );
148 
151  ~H323Connection();
153 
164  virtual bool IsNetworkConnection() const { return true; }
165 
168  virtual PString GetPrefixName() const;
169 
171  virtual void OnApplyStringOptions();
172 
179  virtual PBoolean SetUpConnection();
180 
190  virtual PBoolean SetAlerting(
191  const PString & calleeName,
192  PBoolean withMedia
193  );
194 
199  virtual PBoolean SetConnected();
200 
205  virtual PBoolean SetProgressed();
206 
214  virtual void OnEstablished();
215 
233  virtual void OnReleased();
234 
239  virtual PString GetDestinationAddress();
240 
254  virtual PString GetAlertingType() const;
255 
269  virtual bool SetAlertingType(const PString & info);
270 
273  unsigned GetProgressIndicator() const { return m_progressIndicator; }
274 
277  void SetProgressIndicator(unsigned indicator) { m_progressIndicator = indicator; }
278 
286  virtual OpalMediaFormatList GetMediaFormats() const;
287 
290  virtual unsigned GetNextSessionID(
291  const OpalMediaType & mediaType,
292  bool isSource
293  );
294 
295 #if OPAL_FAX
296 
298  virtual bool SwitchFaxMediaStreams(
299  bool toT38
300  );
301 #endif
302 
306  const OpalMediaFormat & mediaFormat,
307  unsigned sessionID,
308  bool isSource
309  );
310 
315  virtual bool CloseMediaStream(
316  OpalMediaStream & stream
317  );
318 
323  virtual PBoolean GetMediaInformation(
324  unsigned sessionID,
325  MediaInformation & info
326  ) const;
328 
333  void AttachSignalChannel(
334  const PString & token,
335  H323Transport * channel,
336  PBoolean answeringCall
337  );
338 
341  PBoolean WriteSignalPDU(
342  H323SignalPDU & pdu
343  );
344 
348  virtual void HandleSignallingChannel();
349 
353  virtual PBoolean HandleSignalPDU(
354  H323SignalPDU & pdu
355  );
356 
360  virtual void HandleTunnelPDU(
361  H323SignalPDU * txPDU
362  );
363 
371  virtual PBoolean OnReceivedSignalSetup(
372  const H323SignalPDU & pdu
373  );
374 
381  virtual PBoolean OnReceivedSignalSetupAck(
382  const H323SignalPDU & pdu
383  );
384 
391  virtual PBoolean OnReceivedSignalInformation(
392  const H323SignalPDU & pdu
393  );
394 
403  virtual PBoolean OnReceivedCallProceeding(
404  const H323SignalPDU & pdu
405  );
406 
415  virtual PBoolean OnReceivedProgress(
416  const H323SignalPDU & pdu
417  );
418 
425  virtual PBoolean OnReceivedAlerting(
426  const H323SignalPDU & pdu
427  );
428 
437  virtual PBoolean OnReceivedSignalConnect(
438  const H323SignalPDU & pdu
439  );
440 
449  virtual PBoolean OnReceivedFacility(
450  const H323SignalPDU & pdu
451  );
452 
459  virtual PBoolean OnReceivedSignalNotify(
460  const H323SignalPDU & pdu
461  );
462 
469  virtual PBoolean OnReceivedSignalStatus(
470  const H323SignalPDU & pdu
471  );
472 
479  virtual PBoolean OnReceivedStatusEnquiry(
480  const H323SignalPDU & pdu
481  );
482 
487  virtual void OnReceivedReleaseComplete(
488  const H323SignalPDU & pdu
489  );
490 
497  virtual PBoolean OnUnknownSignalPDU(
498  const H323SignalPDU & pdu
499  );
500 
507  virtual void OnSendARQ(
508  H225_AdmissionRequest & arq
509  );
510 
516  virtual void OnReceivedACF(
517  const H225_AdmissionConfirm & acf
518  );
519 
525  virtual void OnReceivedARJ(
526  const H225_AdmissionReject & arj
527  );
528 
535  virtual void OnSendIRR(
536  H225_InfoRequestResponse & irr
537  ) const;
538 
545  virtual void OnSendDRQ(
546  H225_DisengageRequest & drq
547  ) const;
548 
560  virtual PBoolean OnIncomingCall(
561  const H323SignalPDU & setupPDU,
563  );
564 
574  virtual PBoolean ForwardCall(
575  const PString & forwardParty
576  );
577 
584  virtual bool TransferConnection(
585  const PString & remoteParty
586  );
587 
595  virtual bool Hold(
596  bool fromRemote,
597  bool placeOnHold
598  );
599 
604  virtual bool IsOnHold(
605  bool fromRemote
606  );
607 
608 #if OPAL_H450
609 
614  bool TransferCall(
615  const PString & remoteParty,
616  const PString & callIdentity = PString::Empty()
618  );
619 
625  const PString & primaryCallToken
626  );
627 
634  virtual void HandleConsultationTransfer(
635  const PString & callIdentity,
637  H323Connection & incoming
638  );
639 
642  PBoolean IsTransferringCall() const;
643 
646  PBoolean IsTransferredCall() const;
647 
652  virtual void HandleTransferCall(
653  const PString & token,
654  const PString & identity
655  );
656 
662 
670  virtual void HandleCallTransferFailure(
671  const int returnError
672  );
673 
679  const PString & token
680  );
681 
686  virtual void OnConsultationTransferSuccess(
687  H323Connection & secondaryCall
688  );
689 
694  virtual void IntrudeCall(
695  unsigned capabilityLevel
696  );
697 
702  virtual void HandleIntrudeCall(
703  const PString & token,
704  const PString & identity
705  );
706 
713 
714  PBoolean IsCallIntrusion() { return isCallIntrusion; }
715 
719 
723  virtual PBoolean GetRemoteCallIntrusionProtectionLevel(
724  const PString & callToken,
726  );
727 
728  virtual void SetIntrusionImpending();
729 
730  virtual void SetForcedReleaseAccepted();
731 
732  virtual void SetIntrusionNotAuthorized();
733 
741  const unsigned nbOfAddWaitingCalls = 0
742  );
743 
744 #endif
745 
773  const PString & callerName,
774  const H323SignalPDU & setupPDU,
777  );
778 
780  const PString & callerName
781  );
782 
793  void AnsweringCall(
794  AnswerCallResponse response
795  );
796 
807  virtual CallEndReason SendSignalSetup(
808  const PString & alias,
809  const H323TransportAddress & address
810  );
811 
823  virtual PBoolean OnSendSignalSetup(
825  );
826 
835  virtual PBoolean OnSendCallProceeding(
836  H323SignalPDU & callProceedingPDU
837  );
838 
850  virtual PBoolean OnSendReleaseComplete(
851  H323SignalPDU & releaseCompletePDU
852  );
853 
864  virtual PBoolean OnAlerting(
865  const H323SignalPDU & alertingPDU,
866  const PString & user
867  );
868 
883  virtual PBoolean OnInsufficientDigits();
884 
897  virtual void SendMoreDigits(
898  const PString & digits
899  );
900 
910  virtual PBoolean OnOutgoingCall(
911  const H323SignalPDU & connectPDU
912  );
913 
925  virtual PBoolean SendFastStartAcknowledge(
926  H225_ArrayOf_PASN_OctetString & array
927  );
928 
940  virtual PBoolean HandleFastStartAcknowledge(
941  const H225_ArrayOf_PASN_OctetString & array
942  );
944 
958  virtual PBoolean CreateOutgoingControlChannel(
959  const H225_TransportAddress & h245Address
960  );
961 
974  virtual PBoolean CreateIncomingControlChannel(
975  H225_TransportAddress & h245Address
976  );
977 
982  virtual PBoolean WriteControlPDU(
983  const H323ControlPDU & pdu
984  );
985 
988  virtual PBoolean StartControlNegotiations();
989 
992  virtual void HandleControlChannel();
993 
1000  virtual PBoolean HandleControlData(
1001  PPER_Stream & strm
1002  );
1003 
1010  virtual PBoolean HandleControlPDU(
1011  const H323ControlPDU & pdu
1012  );
1013 
1023  virtual PBoolean OnUnknownControlPDU(
1024  const H323ControlPDU & pdu
1025  );
1026 
1030  virtual PBoolean OnH245Request(
1031  const H323ControlPDU & pdu
1032  );
1033 
1037  virtual PBoolean OnH245Response(
1038  const H323ControlPDU & pdu
1039  );
1040 
1044  virtual PBoolean OnH245Command(
1045  const H323ControlPDU & pdu
1046  );
1047 
1051  virtual PBoolean OnH245Indication(
1052  const H323ControlPDU & pdu
1053  );
1054 
1057  virtual PBoolean OnH245_SendTerminalCapabilitySet(
1058  const H245_SendTerminalCapabilitySet & pdu
1059  );
1060 
1065  virtual PBoolean OnH245_FlowControlCommand(
1066  const H245_FlowControlCommand & pdu
1067  );
1068 
1073  virtual PBoolean OnH245_MiscellaneousCommand(
1074  const H245_MiscellaneousCommand & pdu
1075  );
1076 
1081  virtual PBoolean OnH245_MiscellaneousIndication(
1082  const H245_MiscellaneousIndication & pdu
1083  );
1084 
1089  virtual PBoolean OnH245_JitterIndication(
1090  const H245_JitterIndication & pdu
1091  );
1092 
1093 #if OPAL_H239
1094 
1096  virtual bool OnH239Message(
1097  unsigned subMessage,
1098  const H245_ArrayOf_GenericParameter & params
1099  );
1100 
1104  virtual bool OnH239FlowControlRequest(
1105  unsigned logicalChannel,
1106  unsigned bitRate
1107  );
1108 
1112  virtual bool OnH239FlowControlResponse(
1113  unsigned logicalChannel,
1114  bool rejected
1115  );
1116 
1120  virtual bool OnH239PresentationRequest(
1121  unsigned logicalChannel,
1122  unsigned symmetryBreaking,
1123  unsigned terminalLabel
1124  );
1125 
1131  virtual bool SendH239PresentationRequest(
1132  unsigned logicalChannel,
1133  unsigned symmetryBreaking,
1134  unsigned terminalLabel
1135  );
1136 
1140  virtual bool OnH239PresentationResponse(
1141  unsigned logicalChannel,
1142  unsigned terminalLabel,
1143  bool rejected
1144  );
1145 
1149  virtual bool OnH239PresentationRelease(
1150  unsigned logicalChannel,
1151  unsigned terminalLabel
1152  );
1153 
1158  virtual bool SendH239PresentationRelease(
1159  unsigned logicalChannel,
1160  unsigned terminalLabel
1161  );
1162 
1166  virtual bool OnH239PresentationIndication(
1167  unsigned logicalChannel,
1168  unsigned terminalLabel
1169  );
1170 #endif
1171 
1180  };
1181 
1193  virtual PBoolean OnControlProtocolError(
1194  ControlProtocolErrors errorSource,
1195  const void * errorData = NULL
1196  );
1197 
1205  virtual void OnSendCapabilitySet(
1206  H245_TerminalCapabilitySet & pdu
1207  );
1208 
1220  virtual PBoolean OnReceivedCapabilitySet(
1221  const H323Capabilities & remoteCaps,
1222  const H245_MultiplexCapability * muxCap,
1223  H245_TerminalCapabilitySetReject & reject
1224  );
1225 
1228  virtual bool SendCapabilitySet(
1229  PBoolean empty
1230  );
1231 
1234  virtual bool IsSendingCapabilitySet();
1235 
1244  virtual void OnSetLocalCapabilities();
1245 
1248  PBoolean IsH245Master() const;
1249 
1252  void StartRoundTripDelay();
1253 
1256  PTimeInterval GetRoundTripDelay() const;
1258 
1298  virtual void OnSelectLogicalChannels();
1299 
1302  virtual void SelectDefaultLogicalChannel(
1303  const OpalMediaType & mediaType,
1304  unsigned sessionID
1305  );
1306 
1310  virtual void SelectFastStartChannels(
1311  unsigned sessionID,
1312  PBoolean transmitter,
1313  PBoolean receiver
1314  );
1315 
1319  virtual void StartFastStartChannel(
1320  unsigned sessionID,
1321  H323Channel::Directions direction
1322  );
1323 
1338  virtual PBoolean OpenLogicalChannel(
1339  const H323Capability & capability,
1340  unsigned sessionID,
1342  );
1343 
1344  virtual void SendFlowControlCommand(
1345  unsigned channelNumber,
1346  unsigned newBitRate
1347  );
1348 
1358  virtual PBoolean OnOpenLogicalChannel(
1359  const H245_OpenLogicalChannel & openPDU,
1360  H245_OpenLogicalChannelAck & ackPDU,
1361  unsigned & errorCode
1362  );
1363 
1371  virtual PBoolean OnConflictingLogicalChannel(
1372  H323Channel & channel
1373  );
1374 
1380  const H245_OpenLogicalChannel & open,
1381  PBoolean startingFast,
1382  unsigned & errorCode
1383  );
1384 
1420  const H323Capability & capability,
1422  unsigned sessionID,
1423  const H245_H2250LogicalChannelParameters * param,
1425  RTP_QOS * rtpqos = NULL
1426  );
1427 
1432  const H323Capability & capability,
1433  H323Channel::Directions direction,
1434  RTP_Session & rtp
1435  );
1436 
1447  virtual PBoolean OnCreateLogicalChannel(
1448  const H323Capability & capability,
1450  unsigned & errorCode
1451  );
1452 
1457  virtual PBoolean OnStartLogicalChannel(
1458  H323Channel & channel
1459  );
1460 
1463  virtual void CloseLogicalChannel(
1464  unsigned number,
1465  PBoolean fromRemote
1466  );
1467 
1470  virtual void CloseLogicalChannelNumber(
1471  const H323ChannelNumber & number
1472  );
1473 
1476  virtual void CloseAllLogicalChannels(
1477  PBoolean fromRemote
1478  );
1479 
1485  virtual void OnClosedLogicalChannel(
1486  const H323Channel & channel
1487  );
1488 
1497  virtual PBoolean OnClosingLogicalChannel(
1498  H323Channel & channel
1499  );
1500 
1509  virtual void OnLogicalChannelFlowControl(
1510  H323Channel * channel,
1511  long bitRateRestriction
1512  );
1513 
1522  virtual void OnLogicalChannelJitter(
1523  H323Channel * channel,
1524  DWORD jitter,
1525  int skippedFrameCount,
1526  int additionalBuffer
1527  );
1528 
1533  unsigned number,
1534  PBoolean fromRemote
1535  ) const;
1536 
1543  unsigned sessionId,
1544  PBoolean fromRemote
1545  ) const;
1547 
1554  virtual PBoolean SetBandwidthAvailable(
1555  unsigned newBandwidth,
1556  PBoolean force = false
1557  );
1558 
1563  virtual unsigned GetBandwidthUsed() const;
1565 
1574 
1588  virtual PBoolean SendUserInputString(
1589  const PString & value
1590  );
1591 
1616  virtual PBoolean SendUserInputTone(
1617  char tone,
1618  unsigned duration = 0
1619  );
1620 
1627  virtual PBoolean SendUserInputIndicationQ931(
1628  const PString & value
1629  );
1630 
1637  virtual PBoolean SendUserInputIndicationString(
1638  const PString & value
1639  );
1640 
1645  virtual PBoolean SendUserInputIndicationTone(
1646  char tone,
1647  unsigned duration = 0,
1648  unsigned logicalChannel = 0,
1649  unsigned rtpTimestamp = 0
1650  );
1651 
1660  virtual PBoolean SendUserInputIndication(
1661  const H245_UserInputIndication & pdu
1662  );
1663 
1668  virtual void OnUserInputIndication(
1669  const H245_UserInputIndication & pdu
1670  );
1672 
1679  unsigned sessionID
1680  ) const;
1681 
1687  virtual RTP_Session * UseSession(
1688  const OpalTransport & transport,
1689  unsigned sessionID,
1690  const OpalMediaType & mediatype,
1691  RTP_QOS * rtpqos = NULL
1692  );
1693 
1701  virtual void OnRTPStatistics(
1702  const RTP_Session & session
1703  ) const;
1704 
1708  virtual PString GetSessionCodecNames(
1709  unsigned sessionID
1710  ) const;
1711 
1713 
1731  virtual PBoolean RequestModeChange(
1732  const PString & newModes
1733  );
1734 
1742  virtual PBoolean RequestModeChange(
1743  const H245_ArrayOf_ModeDescription & newModes
1744  );
1745 
1748  virtual PBoolean OnRequestModeChange(
1749  const H245_RequestMode & pdu,
1750  H245_RequestModeAck & ack,
1751  H245_RequestModeReject & reject,
1752  PINDEX & selectedMode
1753  );
1754 
1761  virtual void OnModeChanged(
1762  const H245_ModeDescription & newMode
1763  );
1764 
1769  virtual void OnAcceptModeChange(
1770  const H245_RequestModeAck & pdu
1771  );
1772 
1777  virtual void OnRefusedModeChange(
1778  const H245_RequestModeReject * pdu
1779  );
1781 
1789  virtual PBoolean RequestModeChangeT38(
1790  const char * capabilityNames = "T.38\nT38FaxUDP"
1791  );
1792 
1802  virtual PBoolean GetAdmissionRequestAuthentication(
1803  const H225_AdmissionRequest & arq,
1804  H235Authenticators & authenticators
1805  );
1807 
1812  H323EndPoint & GetEndPoint() const { return endpoint; }
1813 
1816  PBoolean HadAnsweredCall() const { return !originating; }
1817 
1820  PBoolean IsGatekeeperRouted() const { return gatekeeperRouted; }
1821 
1826  unsigned GetDistinctiveRing() const { return distinctiveRing; }
1827 
1834  void SetDistinctiveRing(unsigned pattern) { distinctiveRing = pattern&7; }
1835 
1839  const PString & GetCallToken() const { return GetToken(); }
1840 
1843  unsigned GetCallReference() const { return callReference; }
1844 
1847  inline const OpalGloballyUniqueID & GetCallIdentifier() const
1848  { return callIdentifier; }
1849 
1852  virtual PString GetIdentifier() const;
1853 
1857 
1860  void SetLocalPartyName(const PString & name);
1861 
1864  const PStringList & GetLocalAliasNames() const { return localAliasNames; }
1865 
1868  virtual void SetRemotePartyInfo(
1869  const H323SignalPDU & pdu
1870  );
1871 
1874  void SetRemoteApplication(
1875  const H225_EndpointType & pdu
1876  );
1877 
1881 
1885 
1889 
1893 
1896  unsigned GetSignallingVersion() const { return h225version; }
1897 
1900  const H323Transport & GetControlChannel() const;
1901 
1904  OpalTransport & GetTransport() const;
1905 
1908  unsigned GetControlVersion() const { return h245version; }
1909 
1912  unsigned GetUUIEsRequested() const { return uuiesRequested; }
1913 
1916  void SetUUIEsRequested(unsigned mask) { uuiesRequested = mask; }
1917 
1920  const PString GetGkAccessTokenOID() const { return gkAccessTokenOID; }
1921 
1924  void SetGkAccessTokenOID(const PString & oid) { gkAccessTokenOID = oid; }
1925 
1928  const PBYTEArray & GetGkAccessTokenData() const { return gkAccessTokenData; }
1929 
1933  const PString & info
1934  ) { destExtraCallInfo = info; }
1935 
1938  void SetRemotCallWaiting(const unsigned value) { remoteCallWaiting = value; }
1939 
1945  int GetRemoteCallWaiting() const { return remoteCallWaiting; }
1946 
1952  unsigned seconds
1953  );
1955 
1956 #if OPAL_H239
1957 
1959  bool GetLocalH239Control() const { return m_h239Control; }
1960 
1964  bool on
1965  ) { m_h239Control = on; }
1966 
1969  bool GetRemoteH239Control() const;
1970 
1974 #endif
1975 
1976  virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &) const;
1977 
1978  virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &) const;
1979 
1980 #if OPAL_H460
1981 
1983  virtual H460_FeatureSet * GetFeatureSet();
1984 #endif
1985 
1986 
1987 #if OPAL_H450
1988 
1993 #endif
1994 
2000  virtual bool OnMediaCommand(
2001  OpalMediaStream & stream,
2002  const OpalMediaCommand & command
2003  );
2004 
2005  protected:
2011  virtual void InternalEstablishedConnectionCheck();
2012  PBoolean InternalEndSessionCheck(PPER_Stream & strm);
2013  void SetRemoteVersions(const H225_ProtocolIdentifier & id);
2014  void SetBearerCapabilities(H323SignalPDU & pdu) const;
2015  void MonitorCallStatus();
2016  PDECLARE_NOTIFIER(PThread, H323Connection, StartOutgoing);
2017  PDECLARE_NOTIFIER(PThread, H323Connection, NewOutgoingControlChannel);
2018  PDECLARE_NOTIFIER(PThread, H323Connection, NewIncomingControlChannel);
2019 
2021 
2023  int remoteCallWaiting; // Number of call's waiting at the remote endpoint
2026  unsigned callReference;
2030 
2032  PStringList localAliasNames;
2033  H323Capabilities localCapabilities; // Capabilities local system supports
2035  H323Capabilities remoteCapabilities; // Capabilities remote system supports
2038  unsigned uuiesRequested;
2040  PBYTEArray gkAccessTokenData;
2042 
2053 
2064  } connectionState;
2065 
2066  unsigned h225version;
2067  unsigned h245version;
2071 
2078  PSyncPoint digitsWaitFlag;
2083 
2087 
2094  };
2096  H323LogicalChannelList fastStartChannels;
2098 
2099 #if PTRACING
2100  static const char * GetConnectionStatesName(ConnectionStates s);
2101  friend ostream & operator<<(ostream & o, ConnectionStates s) { return o << GetConnectionStatesName(s); }
2102  static const char * GetFastStartStateName(FastStartStates s);
2103  friend ostream & operator<<(ostream & o, FastStartStates s) { return o << GetFastStartStateName(s); }
2104 #endif
2105 
2106 
2107  // The following pointers are to protocol procedures, they are pointers to
2108  // hide their complexity from the H323Connection classes users.
2114 
2115 #if OPAL_H239
2117 #endif
2118 
2119 #if OPAL_H450
2126 #endif
2127 
2128 #if OPAL_H460
2130 #endif
2131 
2132  private:
2133  P_REMOVE_VIRTUAL_VOID(CleanUpOnCallEnd());
2134  P_REMOVE_VIRTUAL_VOID(OnCleared());
2135 };
2136 
2137 
2138 PDICTIONARY(H323CallIdentityDict, PString, H323Connection);
2139 
2140 
2141 #endif // OPAL_H323
2142 
2143 #endif // OPAL_H323_H323CON_H
2144 
2145 
virtual void OnSendARQ(H225_AdmissionRequest &arq)
H323SignalPDU * h245TunnelRxPDU
Definition: h323con.h:2047
virtual PBoolean OnReceivedSignalNotify(const H323SignalPDU &pdu)
unsigned GetCallReference() const
Definition: h323con.h:1843
Definition: h4601.h:1017
H323Channel * FindChannel(unsigned sessionId, PBoolean fromRemote) const
virtual void HandleConsultationTransfer(const PString &callIdentity, H323Connection &incoming)
virtual bool OnH239PresentationIndication(unsigned logicalChannel, unsigned terminalLabel)
H323TransportAddress m_remoteConnectAddress
Definition: h323con.h:2022
H4507Handler * h4507handler
Definition: h323con.h:2124
Definition: h323con.h:2063
virtual PString GetDestinationAddress()
Definition: h323con.h:2062
H323Channel * GetLogicalChannel(unsigned number, PBoolean fromRemote) const
PString localDestinationAddress
Definition: h323con.h:2031
virtual PBoolean SendUserInputTone(char tone, unsigned duration=0)
virtual void OnSendIRR(H225_InfoRequestResponse &irr) const
PString destExtraCallInfo
Definition: h323con.h:2034
virtual PBoolean OnH245_FlowControlCommand(const H245_FlowControlCommand &pdu)
unsigned GetDistinctiveRing() const
Definition: h323con.h:1826
Definition: rtpconn.h:247
virtual PBoolean OnH245Indication(const H323ControlPDU &pdu)
H460_FeatureSet * features
Definition: h323con.h:2129
virtual PBoolean OnReceivedSignalSetup(const H323SignalPDU &pdu)
Definition: h323con.h:1178
virtual void SetIntrusionImpending()
virtual void OnLogicalChannelJitter(H323Channel *channel, DWORD jitter, int skippedFrameCount, int additionalBuffer)
ControlProtocolErrors
Definition: h323con.h:1174
H323Transport * controlChannel
Definition: h323con.h:2044
virtual PBoolean RequestModeChange(const PString &newModes)
Definition: rtp.h:502
PSyncPoint endSessionReceived
Definition: h323con.h:2080
virtual bool SendH239PresentationRelease(unsigned logicalChannel, unsigned terminalLabel)
virtual void OnAlerting()
virtual bool OnMediaCommand(OpalMediaStream &stream, const OpalMediaCommand &command)
virtual PBoolean SetAlerting(const PString &calleeName, PBoolean withMedia)
unsigned m_progressIndicator
Definition: h323con.h:2027
H4504Handler * h4504handler
Definition: h323con.h:2122
virtual void OnAcceptModeChange(const H245_RequestModeAck &pdu)
virtual H323Channel * CreateRealTimeLogicalChannel(const H323Capability &capability, H323Channel::Directions dir, unsigned sessionID, const H245_H2250LogicalChannelParameters *param, RTP_QOS *rtpqos=NULL)
OpalGloballyUniqueID conferenceIdentifier
Definition: h323con.h:2029
Definition: h450pdu.h:183
virtual void HandleControlChannel()
virtual void OnSelectLogicalChannels()
Definition: mediacmd.h:43
virtual void OnReceivedReleaseComplete(const H323SignalPDU &pdu)
const H323Transport & GetControlChannel() const
H323EndPoint & GetEndPoint() const
Definition: h323con.h:1812
PBoolean IsCallIntrusion()
Definition: h323con.h:714
Definition: h323pdu.h:70
H323SignalPDU * alertingPDU
Definition: h323con.h:2050
void SetAssociatedCallToken(const PString &token)
virtual unsigned GetBandwidthUsed() const
bool remoteTransmitPaused
Definition: h323con.h:2075
Definition: h323neg.h:228
virtual void HandleCallTransferFailure(const int returnError)
H245NegTerminalCapabilitySet * capabilityExchangeProcedure
Definition: h323con.h:2110
H323Capabilities remoteCapabilities
Definition: h323con.h:2035
H4502Handler * h4502handler
Definition: h323con.h:2121
Definition: h323caps.h:89
bool gatekeeperRouted
Definition: h323con.h:2024
H245NegRequestMode * requestModeProcedure
Definition: h323con.h:2112
void SetDistinctiveRing(unsigned pattern)
Definition: h323con.h:1834
PBoolean IsTransferredCall() const
virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &) const
Definition: h323con.h:1177
PTimeInterval GetRoundTripDelay() const
Directions
Definition: channels.h:129
Definition: transports.h:703
Definition: h323con.h:1179
PSafePtr< OpalMediaStream > OpalMediaStreamPtr
Definition: mediastrm.h:442
virtual PBoolean SendFastStartAcknowledge(H225_ArrayOf_PASN_OctetString &array)
virtual PBoolean SendUserInputIndicationString(const PString &value)
virtual bool TransferConnection(const PString &remoteParty)
H4507Handler & getH4507handler()
Definition: h323con.h:1992
virtual void OnClosedLogicalChannel(const H323Channel &channel)
const PStringList & GetLocalAliasNames() const
Definition: h323con.h:1864
Definition: channels.h:570
virtual PBoolean SendUserInputIndicationQ931(const PString &value)
PString gkAccessTokenOID
Definition: h323con.h:2039
virtual PBoolean ForwardCall(const PString &forwardParty)
virtual PBoolean OnReceivedSignalInformation(const H323SignalPDU &pdu)
Definition: h450pdu.h:271
Definition: mediatype.h:57
enum H323Connection::ConnectionStates connectionState
Definition: h323con.h:2059
virtual PBoolean OnOpenLogicalChannel(const H245_OpenLogicalChannel &openPDU, H245_OpenLogicalChannelAck &ackPDU, unsigned &errorCode)
virtual AnswerCallResponse OnAnswerCall(const PString &callerName, const H323SignalPDU &setupPDU, H323SignalPDU &connectPDU, H323SignalPDU &progressPDU)
virtual void OnLogicalChannelFlowControl(H323Channel *channel, long bitRateRestriction)
unsigned GetProgressIndicator() const
Definition: h323con.h:273
H245NegMasterSlaveDetermination * masterSlaveDeterminationProcedure
Definition: h323con.h:2109
H323SignalPDU * progressPDU
Definition: h323con.h:2052
Definition: rtp.h:58
Definition: h323neg.h:295
const H323Capabilities & GetLocalCapabilities() const
Definition: h323con.h:1880
const H323Transport * GetSignallingChannel() const
Definition: h323con.h:1892
virtual PBoolean OnUnknownSignalPDU(const H323SignalPDU &pdu)
virtual bool IsNetworkConnection() const
Definition: h323con.h:164
virtual bool CloseMediaStream(OpalMediaStream &stream)
virtual H460_FeatureSet * GetFeatureSet()
bool h245Tunneling
Definition: h323con.h:2046
virtual PBoolean OnSendSignalSetup(H323SignalPDU &setupPDU)
virtual bool IsSendingCapabilitySet()
virtual PBoolean SendUserInputIndication(const H245_UserInputIndication &pdu)
void SetLocalH239Control(bool on)
Definition: h323con.h:1963
const PString GetGkAccessTokenOID() const
Definition: h323con.h:1920
bool endSessionNeeded
Definition: h323con.h:2079
FastStartStates fastStartState
Definition: h323con.h:2095
virtual PBoolean HandleSignalPDU(H323SignalPDU &pdu)
H245NegLogicalChannels * logicalChannels
Definition: h323con.h:2111
virtual PBoolean SendUserInputIndicationTone(char tone, unsigned duration=0, unsigned logicalChannel=0, unsigned rtpTimestamp=0)
virtual PBoolean OnClosingLogicalChannel(H323Channel &channel)
virtual PBoolean OnH245Response(const H323ControlPDU &pdu)
bool GetLocalH239Control() const
Definition: h323con.h:1959
PDECLARE_NOTIFIER(PThread, H323Connection, StartOutgoing)
virtual H323_RTPChannel * CreateRTPChannel(const H323Capability &capability, H323Channel::Directions direction, RTP_Session &rtp)
virtual void IntrudeCall(unsigned capabilityLevel)
virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &) const
virtual PBoolean SetProgressed()
void AnsweringCall(AnswerCallResponse response)
virtual void OnReceivedARJ(const H225_AdmissionReject &arj)
const OpalGloballyUniqueID & GetConferenceIdentifier() const
Definition: h323con.h:1856
PSyncPoint digitsWaitFlag
Definition: h323con.h:2078
PString t38ModeChangeCapabilities
Definition: h323con.h:2077
PBoolean IsGatekeeperRouted() const
Definition: h323con.h:1820
virtual void CloseLogicalChannel(unsigned number, PBoolean fromRemote)
virtual PBoolean OnReceivedStatusEnquiry(const H323SignalPDU &pdu)
PBoolean IsH245Master() const
virtual PBoolean OnInsufficientDigits()
Definition: h450pdu.h:644
Definition: transports.h:351
Definition: h323con.h:2061
bool GetRemoteH239Control() const
virtual PBoolean OnReceivedSignalSetupAck(const H323SignalPDU &pdu)
virtual PBoolean OnReceivedCallProceeding(const H323SignalPDU &pdu)
virtual PBoolean OnReceivedProgress(const H323SignalPDU &pdu)
void SetEnforcedDurationLimit(unsigned seconds)
virtual PBoolean HandleControlPDU(const H323ControlPDU &pdu)
virtual PBoolean OnH245_MiscellaneousIndication(const H245_MiscellaneousIndication &pdu)
unsigned GetLocalCallIntrusionProtectionLevel()
Definition: h323con.h:718
virtual RTP_Session * UseSession(const OpalTransport &transport, unsigned sessionID, const OpalMediaType &mediatype, RTP_QOS *rtpqos=NULL)
OpalMediaStreamPtr fastStartMediaStream
Definition: h323con.h:2097
void SetRemoteVersions(const H225_ProtocolIdentifier &id)
virtual void OnReleased()
PBoolean IsTransferringCall() const
virtual PBoolean OnStartLogicalChannel(H323Channel &channel)
virtual PBoolean HandleFastStartAcknowledge(const H225_ArrayOf_PASN_OctetString &array)
virtual void InternalEstablishedConnectionCheck()
const PString & GetCallToken() const
Definition: h323con.h:1839
bool m_h239Control
Definition: h323con.h:2116
virtual void SetRemotePartyInfo(const H323SignalPDU &pdu)
Definition: mediafmt.h:72
virtual PString GetPrefixName() const
SendUserInputModes
Definition: connection.h:1311
Definition: channels.h:99
PString callToken
Definition: connection.h:1795
OpalGloballyUniqueID callIdentifier
Definition: h323con.h:2028
AnswerCallResponse
Definition: connection.h:417
Definition: connection.h:462
virtual PBoolean OnControlProtocolError(ControlProtocolErrors errorSource, const void *errorData=NULL)
virtual CallEndReason SendSignalSetup(const PString &alias, const H323TransportAddress &address)
void AttachSignalChannel(const PString &token, H323Transport *channel, PBoolean answeringCall)
virtual PString GetIdentifier() const
H323LogicalChannelList fastStartChannels
Definition: h323con.h:2096
virtual bool SwitchFaxMediaStreams(bool toT38)
PBoolean HadAnsweredCall() const
Definition: h323con.h:1816
virtual PBoolean OnReceivedCapabilitySet(const H323Capabilities &remoteCaps, const H245_MultiplexCapability *muxCap, H245_TerminalCapabilitySetReject &reject)
void SetRemotCallWaiting(const unsigned value)
Definition: h323con.h:1938
virtual void OnSetLocalCapabilities()
virtual PBoolean CreateIncomingControlChannel(H225_TransportAddress &h245Address)
unsigned h245version
Definition: h323con.h:2067
virtual void HandleIntrudeCall(const PString &token, const PString &identity)
const OpalGloballyUniqueID & GetCallIdentifier() const
Definition: h323con.h:1847
virtual PBoolean OnReceivedSignalStatus(const H323SignalPDU &pdu)
virtual PBoolean WriteControlPDU(const H323ControlPDU &pdu)
void ConsultationTransfer(const PString &primaryCallToken)
Definition: mediafmt.h:724
virtual PBoolean OnIncomingCall(const H323SignalPDU &setupPDU, H323SignalPDU &alertingPDU)
Definition: h323con.h:2089
virtual bool OnH239PresentationRequest(unsigned logicalChannel, unsigned symmetryBreaking, unsigned terminalLabel)
virtual PBoolean SendUserInputString(const PString &value)
H4506Handler * h4506handler
Definition: h323con.h:2123
FastStartStates
Definition: h323con.h:2088
virtual bool Hold(bool fromRemote, bool placeOnHold)
virtual void OnRefusedModeChange(const H245_RequestModeReject *pdu)
virtual PBoolean GetRemoteCallIntrusionProtectionLevel(const PString &callToken, unsigned callIntrusionProtectionLevel)
virtual void SelectFastStartChannels(unsigned sessionID, PBoolean transmitter, PBoolean receiver)
Definition: h323con.h:2055
virtual H323_RTP_Session * GetSessionCallbacks(unsigned sessionID) const
bool doH245inSETUP
Definition: h323con.h:2069
virtual PBoolean OpenLogicalChannel(const H323Capability &capability, unsigned sessionID, H323Channel::Directions dir)
virtual void OnEstablished()
virtual void SetForcedReleaseAccepted()
unsigned callReference
Definition: h323con.h:2026
Definition: call.h:65
bool isConsultationTransfer
Definition: h323con.h:2082
virtual PBoolean OnH245_MiscellaneousCommand(const H245_MiscellaneousCommand &pdu)
int remoteCallWaiting
Definition: h323con.h:2023
bool lastPDUWasH245inSETUP
Definition: h323con.h:2070
bool mediaWaitForConnect
Definition: h323con.h:2073
unsigned GetControlVersion() const
Definition: h323con.h:1908
void SendCallWaitingIndication(const unsigned nbOfAddWaitingCalls=0)
virtual PBoolean OnUnknownControlPDU(const H323ControlPDU &pdu)
void SetUUIEsRequested(unsigned mask)
Definition: h323con.h:1916
void SetCallIntrusion()
Definition: h323con.h:712
virtual PBoolean OnSendReleaseComplete(H323SignalPDU &releaseCompletePDU)
unsigned remoteMaxAudioDelayJitter
Definition: h323con.h:2036
OpalListener * controlListener
Definition: h323con.h:2045
virtual void SendMoreDigits(const PString &digits)
virtual SendUserInputModes GetRealSendUserInputMode() const
void SetRemoteApplication(const H225_EndpointType &pdu)
Definition: h323con.h:130
virtual PBoolean OnSendCallProceeding(H323SignalPDU &callProceedingPDU)
virtual PString GetSessionCodecNames(unsigned sessionID) const
Definition: h323con.h:2058
virtual PBoolean StartControlNegotiations()
virtual void HandleSignallingChannel()
void SetLocalPartyName(const PString &name)
virtual H323Channel * CreateLogicalChannel(const H245_OpenLogicalChannel &open, PBoolean startingFast, unsigned &errorCode)
H45011Handler * h45011handler
Definition: h323con.h:2125
unsigned distinctiveRing
Definition: h323con.h:2025
virtual void CloseLogicalChannelNumber(const H323ChannelNumber &number)
void SetProgressIndicator(unsigned indicator)
Definition: h323con.h:277
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
virtual void OnSendDRQ(H225_DisengageRequest &drq) const
Definition: h323caps.h:2097
Definition: h323con.h:1176
H245NegRoundTripDelay * roundTripDelayProcedure
Definition: h323con.h:2113
PBoolean InternalEndSessionCheck(PPER_Stream &strm)
virtual void HandleTunnelPDU(H323SignalPDU *txPDU)
virtual bool SetAlertingType(const PString &info)
H450xDispatcher * h450dispatcher
Definition: h323con.h:2120
void SetGkAccessTokenOID(const PString &oid)
Definition: h323con.h:1924
const PString & GetToken() const
Definition: connection.h:1452
virtual PBoolean OnReceivedAlerting(const H323SignalPDU &pdu)
Definition: h323pdu.h:272
virtual bool OnH239FlowControlRequest(unsigned logicalChannel, unsigned bitRate)
virtual PBoolean GetMediaInformation(unsigned sessionID, MediaInformation &info) const
int GetCallTransferInvokeId()
Definition: h323neg.h:122
bool earlyStart
Definition: h323con.h:2076
H323Capabilities localCapabilities
Definition: h323con.h:2033
virtual PBoolean SetUpConnection()
Definition: h323rtp.h:62
virtual PBoolean OnH245Command(const H323ControlPDU &pdu)
PDICTIONARY(H323CallIdentityDict, PString, H323Connection)
virtual void SetIntrusionNotAuthorized()
bool TransferCall(const PString &remoteParty, const PString &callIdentity=PString::Empty())
virtual unsigned GetNextSessionID(const OpalMediaType &mediaType, bool isSource)
unsigned h225version
Definition: h323con.h:2066
Definition: mediastrm.h:111
bool isCallIntrusion
Definition: h323con.h:2085
bool h245versionSet
Definition: h323con.h:2068
PTimer roundTripDelayTimer
Definition: h323con.h:2037
virtual void OnConsultationTransferSuccess(H323Connection &secondaryCall)
virtual bool OnH239FlowControlResponse(unsigned logicalChannel, bool rejected)
Definition: channels.h:70
virtual void CloseAllLogicalChannels(PBoolean fromRemote)
const PBYTEArray & GetGkAccessTokenData() const
Definition: h323con.h:1928
virtual PBoolean OnReceivedSignalConnect(const H323SignalPDU &pdu)
virtual PBoolean OnH245Request(const H323ControlPDU &pdu)
ConnectionStates
Definition: h323con.h:2054
virtual OpalMediaFormatList GetMediaFormats() const
Definition: h450pdu.h:594
void SetBearerCapabilities(H323SignalPDU &pdu) const
PTimer enforcedDurationLimit
Definition: h323con.h:2081
unsigned GetSignallingVersion() const
Definition: h323con.h:1896
H323Connection(OpalCall &call, H323EndPoint &endpoint, const PString &token, const PString &alias, const H323TransportAddress &address, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
virtual PBoolean OnConflictingLogicalChannel(H323Channel &channel)
unsigned uuiesRequested
Definition: h323con.h:2038
PBYTEArray gkAccessTokenData
Definition: h323con.h:2040
Definition: h323con.h:2093
const H323Capabilities & GetRemoteCapabilities() const
Definition: h323con.h:1884
virtual bool SendH239PresentationRequest(unsigned logicalChannel, unsigned symmetryBreaking, unsigned terminalLabel)
virtual PBoolean OnRequestModeChange(const H245_RequestMode &pdu, H245_RequestModeAck &ack, H245_RequestModeReject &reject, PINDEX &selectedMode)
virtual PBoolean SetConnected()
H323SignalPDU * setupPDU
Definition: h323con.h:2049
virtual bool SendCapabilitySet(PBoolean empty)
Definition: h323con.h:2092
virtual PBoolean SetBandwidthAvailable(unsigned newBandwidth, PBoolean force=false)
#define OpalGloballyUniqueID
Definition: guid.h:42
virtual PBoolean OnReceivedFacility(const H323SignalPDU &pdu)
PStringList localAliasNames
Definition: h323con.h:2032
virtual void OnModeChanged(const H245_ModeDescription &newMode)
virtual void OnReceivedACF(const H225_AdmissionConfirm &acf)
virtual OpalMediaStreamPtr OpenMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
H323Transport * signallingChannel
Definition: h323con.h:2043
Definition: h323ep.h:85
bool transmitterSidePaused
Definition: h323con.h:2074
bool mustSendDRQ
Definition: h323con.h:2072
virtual PBoolean OnH245_JitterIndication(const H245_JitterIndication &pdu)
unsigned GetRemoteMaxAudioDelayJitter() const
Definition: h323con.h:1888
Definition: h450pdu.h:522
void MonitorCallStatus()
virtual void SendFlowControlCommand(unsigned channelNumber, unsigned newBitRate)
virtual PBoolean HandleControlData(PPER_Stream &strm)
H323SignalPDU * connectPDU
Definition: h323con.h:2051
virtual bool IsOnHold(bool fromRemote)
H323SignalPDU * h245TunnelTxPDU
Definition: h323con.h:2048
virtual PBoolean CreateOutgoingControlChannel(const H225_TransportAddress &h245Address)
bool addAccessTokenToSetup
Definition: h323con.h:2041
Definition: transaddr.h:66
Definition: h323con.h:2090
virtual void OnSendCapabilitySet(H245_TerminalCapabilitySet &pdu)
virtual bool OnH239PresentationResponse(unsigned logicalChannel, unsigned terminalLabel, bool rejected)
Definition: h323neg.h:76
OpalTransport & GetTransport() const
PBoolean originating
Definition: connection.h:1796
virtual PBoolean GetAdmissionRequestAuthentication(const H225_AdmissionRequest &arq, H235Authenticators &authenticators)
virtual bool OnH239PresentationRelease(unsigned logicalChannel, unsigned terminalLabel)
virtual bool OnH239Message(unsigned subMessage, const H245_ArrayOf_GenericParameter &params)
void SetDestExtraCallInfo(const PString &info)
Definition: h323con.h:1932
void StartRoundTripDelay()
Definition: h450pdu.h:689
virtual PBoolean OnCreateLogicalChannel(const H323Capability &capability, H323Channel::Directions dir, unsigned &errorCode)
OpalMediaFormatList GetRemoteH239Formats() const
PBoolean WriteSignalPDU(H323SignalPDU &pdu)
virtual PString GetAlertingType() const
H323EndPoint & endpoint
Definition: h323con.h:2020
virtual void OnUserInputIndication(const H245_UserInputIndication &pdu)
virtual PBoolean OnOutgoingCall(const H323SignalPDU &connectPDU)
int GetRemoteCallWaiting() const
Definition: h323con.h:1945
virtual PBoolean OnH245_SendTerminalCapabilitySet(const H245_SendTerminalCapabilitySet &pdu)
Definition: h323con.h:2091
virtual PBoolean RequestModeChangeT38(const char *capabilityNames="T.38\nT38FaxUDP")
unsigned callIntrusionProtectionLevel
Definition: h323con.h:2086
virtual void OnApplyStringOptions()
Call back for connection to act on changed string options.
virtual void SelectDefaultLogicalChannel(const OpalMediaType &mediaType, unsigned sessionID)
virtual void HandleTransferCall(const PString &token, const PString &identity)
unsigned GetUUIEsRequested() const
Definition: h323con.h:1912
virtual void StartFastStartChannel(unsigned sessionID, H323Channel::Directions direction)
virtual void OnRTPStatistics(const RTP_Session &session) const
Definition: h323neg.h:271