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: 29731 $
00030  * $Author: rjongbloed $
00031  * $Date: 2013-05-16 22:48:59 -0500 (Thu, 16 May 2013) $
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 <rtp/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 #include <h323/gkclient.h>
00053 #include <asn/h225.h>
00054 
00055 #if OPAL_H460
00056 #include <h460/h4601.h>
00057 #endif
00058 
00059 
00060 class H225_EndpointType;
00061 class H225_VendorIdentifier;
00062 class H225_H221NonStandard;
00063 class H225_ServiceControlDescriptor;
00064 class H225_FeatureSet;
00065 
00066 class H235SecurityInfo;
00067 
00068 class H323Gatekeeper;
00069 class H323SignalPDU;
00070 class H323ServiceControlSession;
00071 
00073 
00086 class H323EndPoint : public OpalRTPEndPoint
00087 {
00088   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00089 
00090   public:
00091     enum {
00092       DefaultTcpSignalPort = 1720
00093     };
00094 
00099     H323EndPoint(
00100       OpalManager & manager
00101     );
00102 
00105     ~H323EndPoint();
00107 
00114     virtual void ShutDown();
00115 
00145     virtual PSafePtr<OpalConnection> MakeConnection(
00146       OpalCall & call,                  
00147       const PString & party,            
00148       void * userData  = NULL,          
00149       unsigned int options = 0,         
00150       OpalConnection::StringOptions * stringOptions = NULL
00151     );
00153 
00158     virtual void SetEndpointTypeInfo(
00159       H225_EndpointType & info
00160     ) const;
00161 
00164     virtual void SetVendorIdentifierInfo(
00165       H225_VendorIdentifier & info
00166     ) const;
00167 
00170     virtual void SetH221NonStandardInfo(
00171       H225_H221NonStandard & info
00172     ) const;
00173 
00176     virtual bool SetGatewaySupportedProtocol(
00177       H225_ArrayOf_SupportedProtocols & protocols
00178     ) const;
00179 
00183     virtual bool OnSetGatewayPrefixes(
00184       PStringList & prefixes
00185     ) const;
00187 
00188 
00199     void AddCapability(
00200       H323Capability * capability   
00201     );
00202 
00223     PINDEX SetCapability(
00224       PINDEX descriptorNum, 
00225       PINDEX simultaneous,  
00226       H323Capability * cap  
00227     );
00228 
00233     PINDEX AddAllCapabilities(
00234       PINDEX descriptorNum, 
00235       PINDEX simultaneous,  
00236       const PString & name  
00237     );
00238 
00241     void AddAllUserInputCapabilities(
00242       PINDEX descriptorNum, 
00243       PINDEX simultaneous   
00244     );
00245 
00248     void RemoveCapabilities(
00249       const PStringArray & codecNames
00250     );
00251 
00254     void ReorderCapabilities(
00255       const PStringArray & preferenceOrder
00256     );
00257 
00260     H323Capability * FindCapability(
00261       const H245_Capability & cap  
00262     ) const;
00263 
00266     H323Capability * FindCapability(
00267       const H245_DataType & dataType  
00268     ) const;
00269 
00272     H323Capability * FindCapability(
00273       H323Capability::MainTypes mainType,   
00274       unsigned subType                      
00275     ) const;
00277 
00300     PBoolean UseGatekeeper(
00301       const PString & address = PString::Empty(),     
00302       const PString & identifier = PString::Empty(),  
00303       const PString & localAddress = PString::Empty() 
00304     );
00305 
00316     PBoolean SetGatekeeper(
00317       const PString & address,          
00318       H323Transport * transport = NULL  
00319     );
00320 
00335     PBoolean SetGatekeeperZone(
00336       const PString & address,          
00337       const PString & identifier,       
00338       H323Transport * transport = NULL  
00339     );
00340 
00350     PBoolean LocateGatekeeper(
00351       const PString & identifier,       
00352       H323Transport * transport = NULL  
00353     );
00354 
00363     PBoolean DiscoverGatekeeper(
00364       H323Transport * transport = NULL  
00365     );
00366 
00374     virtual H323Gatekeeper * CreateGatekeeper(
00375       H323Transport * transport  
00376     );
00377 
00380     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00381 
00384     PBoolean IsRegisteredWithGatekeeper() const;
00385 
00391     PBoolean RemoveGatekeeper(
00392       int reason = -1    
00393     );
00394 
00397     virtual void SetGatekeeperPassword(
00398       const PString & password,
00399       const PString & username = PString::Empty()
00400     );
00401 
00404     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00405 
00408     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00409 
00412     virtual H235Authenticators CreateAuthenticators();
00413 
00416     virtual void OnGatekeeperStatus(
00417       H323Gatekeeper::RegistrationFailReasons status
00418     );
00420 
00425     virtual void NewIncomingConnection(
00426       OpalListener & listener,            
00427       const OpalTransportPtr & transport  
00428     );
00429 
00432     virtual H323Connection * CreateConnection(
00433       OpalCall & call,                         
00434       const PString & token,                   
00435       void * userData,                         
00436       OpalTransport & transport,               
00437       const PString & alias,                   
00438       const H323TransportAddress & address,    
00439       H323SignalPDU * setupPDU,                
00440       unsigned options = 0,
00441       OpalConnection::StringOptions * stringOptions = NULL 
00442     );
00443 
00459     virtual PBoolean SetupTransfer(
00460       const PString & token,        
00461       const PString & callIdentity, 
00462       const PString & remoteParty,  
00463       void * userData = NULL        
00464     );
00465 
00471     void TransferCall(
00472       const PString & token,        
00473       const PString & remoteParty,  
00474       const PString & callIdentity = PString::Empty()
00476     );
00477 
00484     void ConsultationTransfer(
00485       const PString & primaryCallToken,   
00486       const PString & secondaryCallToken  
00487     );
00488 
00492     PBoolean IntrudeCall(
00493       const PString & remoteParty,  
00494       unsigned capabilityLevel,     
00495       void * userData = NULL        
00496     );
00497 
00504     PBoolean ParsePartyName(
00505       const PString & party,          
00506       PString & alias,                
00507       H323TransportAddress & address, 
00508       OpalConnection::StringOptions * stringOptions = NULL 
00509     );
00510 
00521     PSafePtr<H323Connection> FindConnectionWithLock(
00522       const PString & token,     
00523       PSafetyMode mode = PSafeReadWrite
00524     );
00525 
00533     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00534                                    H323SignalPDU & setupPDU);
00535 
00547     virtual PBoolean OnSendCallProceeding(
00548       H323Connection & connection,
00549       H323SignalPDU & callProceedingPDU
00550     );
00551 
00563     virtual PBoolean OnSendConnect(
00564       H323Connection & connection,
00565       H323SignalPDU & connectPDU
00566     );
00567     
00579     virtual PBoolean OnIncomingCall(
00580       H323Connection & connection,    
00581       const H323SignalPDU & setupPDU,   
00582       H323SignalPDU & alertingPDU       
00583     );
00584 
00591     virtual PBoolean OnOutgoingCall(
00592       H323Connection & conn, 
00593       const H323SignalPDU & connectPDU
00594     );
00595 
00600     virtual PBoolean OnCallTransferInitiate(
00601       H323Connection & connection,    
00602       const PString & remoteParty     
00603     );
00604 
00609     virtual PBoolean OnCallTransferIdentify(
00610       H323Connection & connection    
00611     );
00612 
00617     virtual void OnSendARQ(
00618       H323Connection & conn,
00619       H225_AdmissionRequest & arq
00620     );
00621 
00628     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00629       H323Connection & connection,    
00630       const PString & callerName,       
00631       const H323SignalPDU & setupPDU,   
00632       H323SignalPDU & connectPDU,       
00633       H323SignalPDU & progressPDU        
00634     );
00635     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00636        OpalConnection & connection,
00637        const PString & caller
00638     );
00639 
00650     virtual PBoolean OnAlerting(
00651       H323Connection & connection,    
00652       const H323SignalPDU & alertingPDU,  
00653       const PString & user                
00654     );
00655 
00660     virtual PBoolean OnSendAlerting(
00661       H323Connection & connection,  
00662       H323SignalPDU & alerting,     
00663       const PString & calleeName,   
00664       PBoolean withMedia                
00665     );
00666 
00670     virtual PBoolean OnSentAlerting(
00671       H323Connection & connection
00672     );
00673 
00682     virtual PBoolean OnConnectionForwarded(
00683       H323Connection & connection,    
00684       const PString & forwardParty,   
00685       const H323SignalPDU & pdu       
00686     );
00687 
00696     virtual PBoolean ForwardConnection(
00697       H323Connection & connection,    
00698       const PString & forwardParty,   
00699       const H323SignalPDU & pdu       
00700     );
00701 
00708     virtual void OnConnectionEstablished(
00709       H323Connection & connection,    
00710       const PString & token           
00711     );
00712 
00715     virtual PBoolean IsConnectionEstablished(
00716       const PString & token   
00717     );
00719 
00720 
00727     virtual PBoolean OnStartLogicalChannel(
00728       H323Connection & connection,    
00729       H323Channel & channel           
00730     );
00731 
00736     virtual void OnClosedLogicalChannel(
00737       H323Connection & connection,    
00738       const H323Channel & channel     
00739     );
00740 
00746     virtual void OnGatekeeperNATDetect(
00747       PIPSocket::Address publicAddr,         
00748       PString & gkIdentifier,                
00749       H323TransportAddress & gkRouteAddress  
00750     );
00752 
00762     virtual void OnHTTPServiceControl(
00763       unsigned operation,  
00764       unsigned sessionId,  
00765       const PString & url  
00766     );
00767 
00777     virtual void OnCallCreditServiceControl(
00778       const PString & amount,  
00779       PBoolean mode          
00780     );
00781 
00785     virtual void OnServiceControlSession(
00786       unsigned type,
00787       unsigned sessionid,
00788       const H323ServiceControlSession & session,
00789       H323Connection * connection
00790     );
00791 
00794     virtual H323ServiceControlSession * CreateServiceControlSession(
00795       const H225_ServiceControlDescriptor & contents
00796     );
00798 
00806     virtual PBoolean OnCallIndependentSupplementaryService(
00807       const H323SignalPDU & setupPDU
00808     );
00809 
00815     virtual PBoolean OnNegotiateConferenceCapabilities(
00816       const H323SignalPDU & setupPDU
00817     );
00819 
00824     virtual void SetDefaultLocalPartyName(
00825       const PString & name  
00826     );
00827 
00836     virtual void SetLocalUserName(
00837       const PString & name  
00838     );
00839 
00844     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00845 
00852     PBoolean AddAliasName(
00853       const PString & name  
00854     );
00855 
00859     PBoolean RemoveAliasName(
00860       const PString & name  
00861     );
00862 
00867     const PStringList & GetAliasNames() const { return localAliasNames; }
00868 
00871     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00872 
00876     PBoolean AddAliasNamePattern(
00877       const PString & pattern  
00878     );
00879 
00882     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00883 
00886     void SetDefaultILSServer(
00887       const PString & server
00888     ) { manager.SetDefaultILSServer(server); }
00889 
00892     PBoolean IsFastStartDisabled() const
00893       { return disableFastStart; }
00894 
00897     void DisableFastStart(
00898       PBoolean mode 
00899     ) { disableFastStart = mode; } 
00900 
00903     PBoolean IsH245TunnelingDisabled() const
00904       { return disableH245Tunneling; }
00905 
00908     void DisableH245Tunneling(
00909       PBoolean mode 
00910     ) { disableH245Tunneling = mode; } 
00911 
00914     PBoolean IsH245inSetupDisabled() const
00915       { return disableH245inSetup; }
00916 
00919     void DisableH245inSetup(
00920       PBoolean mode 
00921     ) { disableH245inSetup = mode; } 
00922 
00925     bool IsForcedSymmetricTCS() const
00926       { return m_forceSymmetricTCS; }
00927 
00930     void ForceSymmetricTCS(
00931       bool mode 
00932     ) { m_forceSymmetricTCS = mode; } 
00933 
00937     PBoolean IsH245Disabled() const
00938     { return m_bH245Disabled; }
00939 
00943     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00944     
00947     PBoolean CanDisplayAmountString() const
00948       { return canDisplayAmountString; }
00949 
00952     void SetCanDisplayAmountString(
00953       PBoolean mode 
00954     ) { canDisplayAmountString = mode; } 
00955 
00958     PBoolean CanEnforceDurationLimit() const
00959       { return canEnforceDurationLimit; }
00960 
00963     void SetCanEnforceDurationLimit(
00964       PBoolean mode 
00965     ) { canEnforceDurationLimit = mode; } 
00966 
00967 #if OPAL_H450
00968 
00970     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00971 
00974     void SetCallIntrusionProtectionLevel(
00975       unsigned level  
00976     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00977 #endif
00978 
00981     virtual void OnReceivedInitiateReturnError();
00982 
00985     PBoolean CanAutoCallForward() const { return autoCallForward; }
00986 
00989     const H323Capabilities & GetCapabilities() const;
00990 
00993     enum TerminalTypes {
00994       e_TerminalOnly = 50,
00995       e_TerminalAndMC = 70,
00996       e_GatewayOnly = 60,
00997       e_GatewayAndMC = 80,
00998       e_GatewayAndMCWithDataMP = 90,
00999       e_GatewayAndMCWithAudioMP = 100,
01000       e_GatewayAndMCWithAVMP = 110,
01001       e_GatekeeperOnly = 120,
01002       e_GatekeeperWithDataMP = 130,
01003       e_GatekeeperWithAudioMP = 140,
01004       e_GatekeeperWithAVMP = 150,
01005       e_MCUOnly = 160,
01006       e_MCUWithDataMP = 170,
01007       e_MCUWithAudioMP = 180,
01008       e_MCUWithAVMP = 190
01009     };
01010 
01013     void SetTerminalType(TerminalTypes type) { terminalType = type; }
01014 
01017     TerminalTypes GetTerminalType() const { return terminalType; }
01018 
01021     PBoolean IsTerminal() const;
01022 
01025     PBoolean IsGateway() const;
01026 
01029     PBoolean IsGatekeeper() const;
01030 
01033     PBoolean IsMCU() const;
01034 
01038     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01039 
01043     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01044 
01047     void SetAudioJitterDelay(
01048       unsigned minDelay,   
01049       unsigned maxDelay    
01050     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01051 
01052 #if OPAL_H239
01053 
01055     bool GetDefaultH239Control() const { return m_defaultH239Control; }
01056 
01059     void SetDefaultH239Control(
01060       bool on   
01061     ) { m_defaultH239Control = on; }
01062 #endif
01063 
01066     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01067 
01070     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01071     
01075     virtual void LoadBaseFeatureSet();
01076 
01081     virtual bool OnFeatureInstance(
01082       int instType,
01083       const PString & identifer
01084     );
01085 
01086 #if OPAL_H460
01087 
01089     bool FeatureSetDisabled() const { return disableH460; }
01090 
01093     void FeatureSetDisable() { disableH460 = true; }
01094 
01098     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01099 
01100     virtual void NATMethodCallBack(
01101       const PString & /*NatID*/,    
01102       PINDEX /*msgID*/,             
01103       const PString & /*message*/   
01104     ) { }
01105 
01108     void H46018Enable(PBoolean enable);
01109 
01112     PBoolean H46018IsEnabled();
01113 
01116     void H46018Received() {};
01117 
01120     PBoolean H46018InOperation();
01121 
01124     H460_FeatureSet *GetGatekeeperFeatures();
01125 #endif
01126 
01129     virtual PBoolean IsLocalAddress(
01130       const PIPSocket::Address & remoteAddress
01131     ) const { return manager.IsLocalAddress(remoteAddress); }
01132 
01135     virtual void TranslateTCPAddress(
01136       PIPSocket::Address & localAddr,
01137       const PIPSocket::Address & remoteAddr
01138     );
01139 
01142     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01143 
01146     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01147 
01150     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01151 
01154     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01155 
01158     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01159 
01162     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01163 
01166     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01167 
01170     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01171 
01174     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01175 
01178     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01179 
01182     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01183 
01186     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01187 
01190     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01191 
01194     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01195 
01198     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01199 
01202     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01203 
01206     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01207 
01210     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01211 
01214     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01215 
01218     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01219 
01222     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01223 
01226     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01227 
01230     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01231 
01234     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01235 
01238     void SetNoMediaTimeout(
01239       const PTimeInterval & newInterval  
01240     ) { manager.SetNoMediaTimeout(newInterval); }
01241 
01244     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01245 
01248     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01249 
01252     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01253 
01256     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01257 
01261     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01262 
01266     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01267 
01270     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01271 
01274     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01275 
01278     PBoolean GetSendGRQ() const
01279     { return sendGRQ; }
01280 
01283     void SetSendGRQ(PBoolean v) 
01284     { sendGRQ = v; }
01285 
01288     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01289 
01292     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01293 
01296     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01297 
01300     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01301 
01303     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01304     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01305     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01306     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01307     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01308     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01309 
01312     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01313 
01316 #if OPAL_H450
01317     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01318 #endif
01319 
01323     virtual PString GetDefaultTransport() const;
01324 
01327     virtual WORD GetDefaultSignalPort() const;
01328 
01330     PString GetCompatibility(
01331       H323Connection::CompatibilityIssues issue    
01332     ) const;
01333 
01339     bool SetCompatibility(
01340       H323Connection::CompatibilityIssues issue,    
01341       const PString & regex         
01342     );
01343 
01351     bool AddCompatibility(
01352       H323Connection::CompatibilityIssues issue,    
01353       const PString & regex         
01354     );
01355 
01357     bool HasCompatibilityIssue(
01358       H323Connection::CompatibilityIssues issue,            
01359       const OpalProductInfo & productInfo   
01360     ) const;
01362 
01363   protected:
01364     bool InternalCreateGatekeeper(
01365       H323Transport * transport,
01366       const H323TransportAddress & gkAddress
01367     );
01368     H323Connection * InternalMakeCall(
01369       OpalCall & call,
01370       const PString & existingToken,           
01371       const PString & callIdentity,            
01372       unsigned capabilityLevel,                
01373       const PString & remoteParty,             
01374       void * userData,                         
01375       unsigned int options = 0,                
01376       OpalConnection::StringOptions * stringOptions = NULL 
01377     );
01378 
01379     // Configuration variables, commonly changed
01380     PStringList     localAliasNames;
01381     PStringList     localAliasPatterns;
01382     PBoolean        autoCallForward;
01383     PBoolean        disableFastStart;
01384     PBoolean        disableH245Tunneling;
01385     PBoolean        disableH245inSetup;
01386     bool            m_forceSymmetricTCS;
01387     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01388     PBoolean        canDisplayAmountString;
01389     PBoolean        canEnforceDurationLimit;
01390 #if OPAL_H450
01391     unsigned        callIntrusionProtectionLevel;
01392 #endif
01393 
01394     TerminalTypes   terminalType;
01395 
01396 #if OPAL_H239
01397     bool            m_defaultH239Control;
01398 #endif
01399 
01400     PBoolean        clearCallOnRoundTripFail;
01401 
01402     // Some more configuration variables, rarely changed.
01403     PTimeInterval signallingChannelCallTimeout;
01404     PTimeInterval controlChannelStartTimeout;
01405     PTimeInterval endSessionTimeout;
01406     PTimeInterval masterSlaveDeterminationTimeout;
01407     unsigned      masterSlaveDeterminationRetries;
01408     PTimeInterval capabilityExchangeTimeout;
01409     PTimeInterval logicalChannelTimeout;
01410     PTimeInterval requestModeTimeout;
01411     PTimeInterval roundTripDelayTimeout;
01412     PTimeInterval roundTripDelayRate;
01413     PTimeInterval gatekeeperRequestTimeout;
01414     unsigned      gatekeeperRequestRetries;
01415     PTimeInterval rasRequestTimeout;
01416     unsigned      rasRequestRetries;
01417     PTimeInterval registrationTimeToLive;
01418 
01419     PString       gkAccessTokenOID;
01420     PBoolean          sendGRQ;
01421 
01422     /* Protect against absence of a response to the ctIdentify reqest
01423        (Transferring Endpoint - Call Transfer with a secondary Call) */
01424     PTimeInterval callTransferT1;
01425     /* Protect against failure of completion of the call transfer operation
01426        involving a secondary Call (Transferred-to Endpoint) */
01427     PTimeInterval callTransferT2;
01428     /* Protect against failure of the Transferred Endpoint not responding
01429        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01430     PTimeInterval callTransferT3;
01431     /* May optionally operate - protects against absence of a response to the
01432        ctSetup request (Transferred Endpoint) */
01433     PTimeInterval callTransferT4;
01434 
01436     PTimeInterval callIntrusionT1;
01437     PTimeInterval callIntrusionT2;
01438     PTimeInterval callIntrusionT3;
01439     PTimeInterval callIntrusionT4;
01440     PTimeInterval callIntrusionT5;
01441     PTimeInterval callIntrusionT6;
01442 
01443     // Dynamic variables
01444     mutable H323Capabilities capabilities;
01445     H323Gatekeeper *     gatekeeper;
01446     PString              gatekeeperUsername;
01447     PString              gatekeeperPassword;
01448     H323CallIdentityDict secondaryConnectionsActive;
01449 
01450 #if OPAL_H450
01451     mutable PAtomicInteger nextH450CallIdentity;
01453 #endif
01454 
01455 #if OPAL_H460
01456     bool            disableH460;
01457     H460_FeatureSet features;
01458     bool m_h46018enabled;
01459 #endif
01460 
01461     typedef map<H323Connection::CompatibilityIssues, PRegularExpression> CompatibilityEndpoints;
01462     CompatibilityEndpoints m_compatibility;
01463 
01464   private:
01465     P_REMOVE_VIRTUAL_VOID(OnConnectionCleared(H323Connection &, const PString &));
01466     P_REMOVE_VIRTUAL_VOID(OnRTPStatistics(const H323Connection &, const OpalRTPSession &) const);
01467     P_REMOVE_VIRTUAL(PBoolean, OnConferenceInvite(const H323SignalPDU &), false);
01468     P_REMOVE_VIRTUAL_VOID(OnGatekeeperConfirm());
01469     P_REMOVE_VIRTUAL_VOID(OnGatekeeperReject());
01470     P_REMOVE_VIRTUAL_VOID(OnRegistrationConfirm());
01471     P_REMOVE_VIRTUAL_VOID(OnRegistrationReject());
01472 
01473 #if OPAL_H460
01474   // This is because there h323plus had
01475   // a public way of adding a connection
01476   friend class H46018Transport;
01477 #endif
01478 };
01479 
01480 #endif // OPAL_H323
01481 
01482 #endif // OPAL_H323_H323EP_H
01483 
01484 

Generated on 21 Jun 2013 for OPAL by  doxygen 1.4.7