h323ep.h

Go to the documentation of this file.
00001 /*
00002  * h323ep.h
00003  *
00004  * H.323 protocol handler
00005  *
00006  * Open H323 Library
00007  *
00008  * Copyright (c) 1998-2001 Equivalence Pty. Ltd.
00009  *
00010  * The contents of this file are subject to the Mozilla Public License
00011  * Version 1.0 (the "License"); you may not use this file except in
00012  * compliance with the License. You may obtain a copy of the License at
00013  * http://www.mozilla.org/MPL/
00014  *
00015  * Software distributed under the License is distributed on an "AS IS"
00016  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00017  * the License for the specific language governing rights and limitations
00018  * under the License.
00019  *
00020  * The Original Code is Open H323 Library.
00021  *
00022  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
00023  *
00024  * Portions of this code were written with the assisance of funding from
00025  * Vovida Networks, Inc. http://www.vovida.com.
00026  *
00027  * Contributor(s): ______________________________________.
00028  *
00029  * $Revision: 22361 $
00030  * $Author: rjongbloed $
00031  * $Date: 2009-04-01 07:06:50 +0000 (Wed, 01 Apr 2009) $
00032  */
00033 
00034 #ifndef OPAL_H323_H323EP_H
00035 #define OPAL_H323_H323EP_H
00036 
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040 
00041 #include <opal/buildopts.h>
00042 
00043 #if OPAL_H323
00044 
00045 #include <opal/rtpep.h>
00046 #include <opal/manager.h>
00047 #include <opal/call.h>
00048 #include <opal/transports.h>
00049 #include <h323/h323con.h>
00050 #include <h323/h323caps.h>
00051 #include <h323/h235auth.h>
00052 
00053 #if OPAL_H460
00054 #include <h460/h4601.h>
00055 #endif
00056 
00057 
00058 class H225_EndpointType;
00059 class H225_VendorIdentifier;
00060 class H225_H221NonStandard;
00061 class H225_ServiceControlDescriptor;
00062 class H225_FeatureSet;
00063 
00064 class H235SecurityInfo;
00065 
00066 class H323Gatekeeper;
00067 class H323SignalPDU;
00068 class H323ServiceControlSession;
00069 
00071 
00084 class H323EndPoint : public OpalRTPEndPoint
00085 {
00086   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00087 
00088   public:
00089     enum {
00090       DefaultTcpSignalPort = 1720
00091     };
00092 
00097     H323EndPoint(
00098       OpalManager & manager
00099     );
00100 
00103     ~H323EndPoint();
00105 
00112     virtual void ShutDown();
00113 
00143     virtual PBoolean MakeConnection(
00144       OpalCall & call,                  
00145       const PString & party,            
00146       void * userData  = NULL,          
00147       unsigned int options = NULL,      
00148       OpalConnection::StringOptions * stringOptions = NULL
00149     );
00151 
00156     virtual void SetEndpointTypeInfo(
00157       H225_EndpointType & info
00158     ) const;
00159 
00162     virtual void SetVendorIdentifierInfo(
00163       H225_VendorIdentifier & info
00164     ) const;
00165 
00168     virtual void SetH221NonStandardInfo(
00169       H225_H221NonStandard & info
00170     ) const;
00172 
00173 
00184     void AddCapability(
00185       H323Capability * capability   
00186     );
00187 
00208     PINDEX SetCapability(
00209       PINDEX descriptorNum, 
00210       PINDEX simultaneous,  
00211       H323Capability * cap  
00212     );
00213 
00218     PINDEX AddAllCapabilities(
00219       PINDEX descriptorNum, 
00220       PINDEX simultaneous,  
00221       const PString & name  
00222     );
00223 
00226     void AddAllUserInputCapabilities(
00227       PINDEX descriptorNum, 
00228       PINDEX simultaneous   
00229     );
00230 
00233     void RemoveCapabilities(
00234       const PStringArray & codecNames
00235     );
00236 
00239     void ReorderCapabilities(
00240       const PStringArray & preferenceOrder
00241     );
00242 
00245     H323Capability * FindCapability(
00246       const H245_Capability & cap  
00247     ) const;
00248 
00251     H323Capability * FindCapability(
00252       const H245_DataType & dataType  
00253     ) const;
00254 
00257     H323Capability * FindCapability(
00258       H323Capability::MainTypes mainType,   
00259       unsigned subType                      
00260     ) const;
00262 
00285     PBoolean UseGatekeeper(
00286       const PString & address = PString::Empty(),     
00287       const PString & identifier = PString::Empty(),  
00288       const PString & localAddress = PString::Empty() 
00289     );
00290 
00301     PBoolean SetGatekeeper(
00302       const PString & address,          
00303       H323Transport * transport = NULL  
00304     );
00305 
00320     PBoolean SetGatekeeperZone(
00321       const PString & address,          
00322       const PString & identifier,       
00323       H323Transport * transport = NULL  
00324     );
00325 
00335     PBoolean LocateGatekeeper(
00336       const PString & identifier,       
00337       H323Transport * transport = NULL  
00338     );
00339 
00348     PBoolean DiscoverGatekeeper(
00349       H323Transport * transport = NULL  
00350     );
00351 
00359     virtual H323Gatekeeper * CreateGatekeeper(
00360       H323Transport * transport  
00361     );
00362 
00365     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00366 
00369     PBoolean IsRegisteredWithGatekeeper() const;
00370 
00376     PBoolean RemoveGatekeeper(
00377       int reason = -1    
00378     );
00379 
00382     virtual void SetGatekeeperPassword(
00383       const PString & password,
00384       const PString & username = PString::Empty()
00385     );
00386 
00389     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00390 
00393     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00394 
00397     virtual H235Authenticators CreateAuthenticators();
00398 
00401     virtual void  OnGatekeeperConfirm();
00402 
00405     virtual void  OnGatekeeperReject();
00406 
00409     virtual void OnRegistrationConfirm();
00410 
00413     virtual void  OnRegistrationReject();
00415 
00420     virtual PBoolean NewIncomingConnection(
00421       OpalTransport * transport  
00422     );
00423 
00426     virtual H323Connection * CreateConnection(
00427       OpalCall & call,                         
00428       const PString & token,                   
00429       void * userData,                         
00430       OpalTransport & transport,               
00431       const PString & alias,                   
00432       const H323TransportAddress & address,    
00433       H323SignalPDU * setupPDU,                
00434       unsigned options = 0,
00435       OpalConnection::StringOptions * stringOptions = NULL 
00436     );
00437 
00453     virtual PBoolean SetupTransfer(
00454       const PString & token,        
00455       const PString & callIdentity, 
00456       const PString & remoteParty,  
00457       void * userData = NULL        
00458     );
00459 
00465     void TransferCall(
00466       const PString & token,        
00467       const PString & remoteParty,  
00468       const PString & callIdentity = PString::Empty()
00470     );
00471 
00478     void ConsultationTransfer(
00479       const PString & primaryCallToken,   
00480       const PString & secondaryCallToken  
00481     );
00482 
00486     void HoldCall(
00487       const PString & token,        
00488       PBoolean localHold   
00489     );
00490 
00494     PBoolean IntrudeCall(
00495       const PString & remoteParty,  
00496       unsigned capabilityLevel,     
00497       void * userData = NULL        
00498     );
00499 
00506     PBoolean ParsePartyName(
00507       const PString & party,          
00508       PString & alias,                
00509       H323TransportAddress & address  
00510     );
00511 
00522     PSafePtr<H323Connection> FindConnectionWithLock(
00523       const PString & token,     
00524       PSafetyMode mode = PSafeReadWrite
00525     );
00526 
00534     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00535                                    H323SignalPDU & setupPDU);
00536 
00548     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00549                                       H323SignalPDU & callProceedingPDU
00550                                      );
00551     
00563     virtual PBoolean OnSendConnect(H323Connection & connection,
00564                                H323SignalPDU & connectPDU
00565                               );
00566     
00578     virtual PBoolean OnIncomingCall(
00579       H323Connection & connection,    
00580       const H323SignalPDU & setupPDU,   
00581       H323SignalPDU & alertingPDU       
00582     );
00583 
00590     virtual PBoolean OnOutgoingCall(
00591         H323Connection & conn, 
00592         const H323SignalPDU & connectPDU
00593     );
00594 
00599     virtual PBoolean OnCallTransferInitiate(
00600       H323Connection & connection,    
00601       const PString & remoteParty     
00602     );
00603 
00608     virtual PBoolean OnCallTransferIdentify(
00609       H323Connection & connection    
00610     );
00611 
00616     virtual void OnSendARQ(
00617       H323Connection & conn,
00618       H225_AdmissionRequest & arq
00619     );
00620 
00627     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00628       H323Connection & connection,    
00629       const PString & callerName,       
00630       const H323SignalPDU & setupPDU,   
00631       H323SignalPDU & connectPDU,       
00632       H323SignalPDU & progressPDU        
00633     );
00634     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00635        OpalConnection & connection,
00636        const PString & caller
00637     );
00638 
00649     virtual PBoolean OnAlerting(
00650       H323Connection & connection,    
00651       const H323SignalPDU & alertingPDU,  
00652       const PString & user                
00653     );
00654 
00660     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00661                                 H323SignalPDU & alerting,     
00662                                 const PString & calleeName,   
00663                                 PBoolean withMedia                
00664                                );
00665         
00670     virtual PBoolean OnSentAlerting(H323Connection & connection);
00671     
00680     virtual PBoolean OnConnectionForwarded(
00681       H323Connection & connection,    
00682       const PString & forwardParty,   
00683       const H323SignalPDU & pdu       
00684     );
00685 
00694     virtual PBoolean ForwardConnection(
00695       H323Connection & connection,    
00696       const PString & forwardParty,   
00697       const H323SignalPDU & pdu       
00698     );
00699 
00706     virtual void OnConnectionEstablished(
00707       H323Connection & connection,    
00708       const PString & token           
00709     );
00710 
00713     virtual PBoolean IsConnectionEstablished(
00714       const PString & token   
00715     );
00716 
00723     virtual void OnConnectionCleared(
00724       H323Connection & connection,    
00725       const PString & token           
00726     );
00728 
00729 
00736     virtual PBoolean OnStartLogicalChannel(
00737       H323Connection & connection,    
00738       H323Channel & channel           
00739     );
00740 
00745     virtual void OnClosedLogicalChannel(
00746       H323Connection & connection,    
00747       const H323Channel & channel     
00748     );
00749 
00757     virtual void OnRTPStatistics(
00758       const H323Connection & connection,  
00759       const RTP_Session & session         
00760     ) const;
00761 
00767     virtual void OnGatekeeperNATDetect(
00768       PIPSocket::Address publicAddr,         
00769       PString & gkIdentifier,                
00770       H323TransportAddress & gkRouteAddress  
00771     );
00773 
00783     virtual void OnHTTPServiceControl(
00784       unsigned operation,  
00785       unsigned sessionId,  
00786       const PString & url  
00787     );
00788 
00798     virtual void OnCallCreditServiceControl(
00799       const PString & amount,  
00800       PBoolean mode          
00801     );
00802 
00806     virtual void OnServiceControlSession(
00807       unsigned type,
00808       unsigned sessionid,
00809       const H323ServiceControlSession & session,
00810       H323Connection * connection
00811     );
00812 
00815     virtual H323ServiceControlSession * CreateServiceControlSession(
00816       const H225_ServiceControlDescriptor & contents
00817     );
00819 
00827     virtual PBoolean OnConferenceInvite(
00828       const H323SignalPDU & setupPDU
00829     );
00830 
00836     virtual PBoolean OnCallIndependentSupplementaryService(
00837       const H323SignalPDU & setupPDU
00838     );
00839 
00845     virtual PBoolean OnNegotiateConferenceCapabilities(
00846       const H323SignalPDU & setupPDU
00847     );
00849 
00854     virtual void SetDefaultLocalPartyName(
00855       const PString & name  
00856     );
00857 
00866     virtual void SetLocalUserName(
00867       const PString & name  
00868     );
00869 
00874     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00875 
00882     PBoolean AddAliasName(
00883       const PString & name  
00884     );
00885 
00889     PBoolean RemoveAliasName(
00890       const PString & name  
00891     );
00892 
00897     const PStringList & GetAliasNames() const { return localAliasNames; }
00898 
00901     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00902 
00906     PBoolean AddAliasNamePattern(
00907       const PString & pattern  
00908     );
00909 
00912     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00913 
00916     void SetDefaultILSServer(
00917       const PString & server
00918     ) { manager.SetDefaultILSServer(server); }
00919 
00922     PBoolean IsFastStartDisabled() const
00923       { return disableFastStart; }
00924 
00927     void DisableFastStart(
00928       PBoolean mode 
00929     ) { disableFastStart = mode; } 
00930 
00933     PBoolean IsH245TunnelingDisabled() const
00934       { return disableH245Tunneling; }
00935 
00938     void DisableH245Tunneling(
00939       PBoolean mode 
00940     ) { disableH245Tunneling = mode; } 
00941 
00944     PBoolean IsH245inSetupDisabled() const
00945       { return disableH245inSetup; }
00946 
00949     void DisableH245inSetup(
00950       PBoolean mode 
00951     ) { disableH245inSetup = mode; } 
00952 
00956     PBoolean IsH245Disabled() const
00957     { return m_bH245Disabled; }
00958 
00962     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00963     
00966     PBoolean CanDisplayAmountString() const
00967       { return canDisplayAmountString; }
00968 
00971     void SetCanDisplayAmountString(
00972       PBoolean mode 
00973     ) { canDisplayAmountString = mode; } 
00974 
00977     PBoolean CanEnforceDurationLimit() const
00978       { return canEnforceDurationLimit; }
00979 
00982     void SetCanEnforceDurationLimit(
00983       PBoolean mode 
00984     ) { canEnforceDurationLimit = mode; } 
00985 
00986 #if OPAL_H450
00987 
00989     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00990 
00993     void SetCallIntrusionProtectionLevel(
00994       unsigned level  
00995     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00996 #endif
00997 
01000     virtual void OnReceivedInitiateReturnError();
01001 
01004     PBoolean CanAutoCallForward() const { return autoCallForward; }
01005 
01008     const H323Capabilities & GetCapabilities() const;
01009 
01012     enum TerminalTypes {
01013       e_TerminalOnly = 50,
01014       e_TerminalAndMC = 70,
01015       e_GatewayOnly = 60,
01016       e_GatewayAndMC = 80,
01017       e_GatewayAndMCWithDataMP = 90,
01018       e_GatewayAndMCWithAudioMP = 100,
01019       e_GatewayAndMCWithAVMP = 110,
01020       e_GatekeeperOnly = 120,
01021       e_GatekeeperWithDataMP = 130,
01022       e_GatekeeperWithAudioMP = 140,
01023       e_GatekeeperWithAVMP = 150,
01024       e_MCUOnly = 160,
01025       e_MCUWithDataMP = 170,
01026       e_MCUWithAudioMP = 180,
01027       e_MCUWithAVMP = 190
01028     };
01029 
01032     TerminalTypes GetTerminalType() const { return terminalType; }
01033 
01036     PBoolean IsTerminal() const;
01037 
01040     PBoolean IsGateway() const;
01041 
01044     PBoolean IsGatekeeper() const;
01045 
01048     PBoolean IsMCU() const;
01049 
01053     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01054 
01058     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01059 
01062     void SetAudioJitterDelay(
01063       unsigned minDelay,   
01064       unsigned maxDelay    
01065     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01066 
01069     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01070 
01073     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01074 
01077     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01078 
01081     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01082         
01086     virtual void LoadBaseFeatureSet();
01087 
01092     virtual bool OnFeatureInstance(
01093       int instType,
01094       const PString & identifer
01095     );
01096 
01097 #if OPAL_H460
01098 
01100     bool FeatureSetDisabled() const { return disableH460; }
01101 
01104     void FeatureSetDisable() { disableH460 = true; }
01105 
01109     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01110 #endif
01111 
01114     virtual PBoolean IsLocalAddress(
01115       const PIPSocket::Address & remoteAddress
01116     ) const { return manager.IsLocalAddress(remoteAddress); }
01117 
01120     virtual void TranslateTCPAddress(
01121       PIPSocket::Address & localAddr,
01122       const PIPSocket::Address & remoteAddr
01123     );
01124 
01127     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01128 
01131     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01132 
01135     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01136 
01139     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01140 
01143     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01144 
01147     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01148 
01151     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01152 
01155     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01156 
01159     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01160 
01163     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01164 
01167     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01168 
01171     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01172 
01175     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01176 
01179     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01180 
01183     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01184 
01187     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01188 
01191     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01192 
01195     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01196 
01199     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01200 
01203     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01204 
01207     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01208 
01211     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01212 
01215     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01216 
01219     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01220 
01223     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01224 
01227     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01228 
01231     PBoolean SetNoMediaTimeout(
01232       const PTimeInterval & newInterval  
01233     ) { return manager.SetNoMediaTimeout(newInterval); }
01234 
01237     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01238 
01241     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01242 
01245     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01246 
01249     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01250 
01254     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01255 
01259     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01260 
01263     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01264 
01267     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01268 
01271     PBoolean GetSendGRQ() const
01272     { return sendGRQ; }
01273 
01276     void SetSendGRQ(PBoolean v) 
01277     { sendGRQ = v; }
01278 
01281     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01282 
01285     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01286 
01289     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01290 
01293     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01294 
01296     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01297     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01298     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01299     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01300     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01301     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01302 
01305     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01306 
01309 #if OPAL_H450
01310     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01311 #endif
01312 
01313     PString GetDefaultTransport() const;
01315 
01316   protected:
01317     bool InternalCreateGatekeeper(H323Transport * transport);
01318     PBoolean InternalMakeCall(
01319       OpalCall & call,
01320       const PString & existingToken,           
01321       const PString & callIdentity,            
01322       unsigned capabilityLevel,                
01323       const PString & remoteParty,             
01324       void * userData,                         
01325       unsigned int options = 0,                
01326       OpalConnection::StringOptions * stringOptions = NULL 
01327     );
01328 
01329     // Configuration variables, commonly changed
01330     PStringList     localAliasNames;
01331     PStringList     localAliasPatterns;
01332     PBoolean        autoCallForward;
01333     PBoolean        disableFastStart;
01334     PBoolean        disableH245Tunneling;
01335     PBoolean        disableH245inSetup;
01336     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01337     PBoolean        canDisplayAmountString;
01338     PBoolean        canEnforceDurationLimit;
01339 #if OPAL_H450
01340     unsigned    callIntrusionProtectionLevel;
01341 #endif
01342 
01343     TerminalTypes terminalType;
01344 
01345     PBoolean          clearCallOnRoundTripFail;
01346 
01347     // Some more configuration variables, rarely changed.
01348     PTimeInterval signallingChannelCallTimeout;
01349     PTimeInterval controlChannelStartTimeout;
01350     PTimeInterval endSessionTimeout;
01351     PTimeInterval masterSlaveDeterminationTimeout;
01352     unsigned      masterSlaveDeterminationRetries;
01353     PTimeInterval capabilityExchangeTimeout;
01354     PTimeInterval logicalChannelTimeout;
01355     PTimeInterval requestModeTimeout;
01356     PTimeInterval roundTripDelayTimeout;
01357     PTimeInterval roundTripDelayRate;
01358     PTimeInterval gatekeeperRequestTimeout;
01359     unsigned      gatekeeperRequestRetries;
01360     PTimeInterval rasRequestTimeout;
01361     unsigned      rasRequestRetries;
01362     PTimeInterval registrationTimeToLive;
01363 
01364     PString       gkAccessTokenOID;
01365     PBoolean          sendGRQ;
01366 
01367     /* Protect against absence of a response to the ctIdentify reqest
01368        (Transferring Endpoint - Call Transfer with a secondary Call) */
01369     PTimeInterval callTransferT1;
01370     /* Protect against failure of completion of the call transfer operation
01371        involving a secondary Call (Transferred-to Endpoint) */
01372     PTimeInterval callTransferT2;
01373     /* Protect against failure of the Transferred Endpoint not responding
01374        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01375     PTimeInterval callTransferT3;
01376     /* May optionally operate - protects against absence of a response to the
01377        ctSetup request (Transferred Endpoint) */
01378     PTimeInterval callTransferT4;
01379 
01381     PTimeInterval callIntrusionT1;
01382     PTimeInterval callIntrusionT2;
01383     PTimeInterval callIntrusionT3;
01384     PTimeInterval callIntrusionT4;
01385     PTimeInterval callIntrusionT5;
01386     PTimeInterval callIntrusionT6;
01387 
01388     // Dynamic variables
01389     mutable H323Capabilities capabilities;
01390     H323Gatekeeper *     gatekeeper;
01391     PString              gatekeeperUsername;
01392     PString              gatekeeperPassword;
01393     H323CallIdentityDict secondaryConnectionsActive;
01394 
01395 #if OPAL_H450
01396     mutable PAtomicInteger nextH450CallIdentity;
01398 #endif
01399 
01400 #if OPAL_H460
01401     bool            disableH460;
01402     H460_FeatureSet features;
01403 #endif
01404 
01405 };
01406 
01407 #endif // OPAL_H323
01408 
01409 #endif // OPAL_H323_H323EP_H
01410 
01411 

Generated on Tue May 19 09:56:17 2009 for OPAL by  doxygen 1.5.1