OPAL  Version 3.14.3
H323EndPoint Class Reference

#include <h323ep.h>

Inheritance diagram for H323EndPoint:
Collaboration diagram for H323EndPoint:

Public Types

enum  { DefaultTcpSignalPort = 1720 }
 

Public Member Functions

void TickleGatekeeperMonitor ()
 
Construction
 H323EndPoint (OpalManager &manager)
 
 ~H323EndPoint ()
 
Overrides from OpalEndPoint
virtual void ShutDown ()
 
virtual PBoolean GarbageCollection ()
 
virtual PSafePtr< OpalConnectionMakeConnection (OpalCall &call, const PString &party, void *userData=NULL, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)
 
virtual void OnReleased (OpalConnection &connection)
 
virtual PStringList GetAvailableStringOptions () const
 
Set up functions
virtual void SetEndpointTypeInfo (H225_EndpointType &info) const
 
virtual void SetVendorIdentifierInfo (H225_VendorIdentifier &info) const
 
virtual void SetH221NonStandardInfo (H225_H221NonStandard &info) const
 
virtual bool SetGatewaySupportedProtocol (H225_ArrayOf_SupportedProtocols &protocols) const
 
virtual bool OnSetGatewayPrefixes (PStringList &prefixes) const
 
Connection management
virtual void NewIncomingConnection (OpalListener &listener, const OpalTransportPtr &transport)
 
void InternalNewIncomingConnection (OpalTransportPtr transport, bool reused=false)
 
virtual H323ConnectionCreateConnection (OpalCall &call, const PString &token, void *userData, OpalTransport &transport, const PString &alias, const H323TransportAddress &address, H323SignalPDU *setupPDU, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
 
virtual PBoolean SetupTransfer (const PString &token, const PString &callIdentity, const PString &remoteParty, void *userData=NULL)
 
void TransferCall (const PString &token, const PString &remoteParty, const PString &callIdentity=PString::Empty())
 
void ConsultationTransfer (const PString &primaryCallToken, const PString &secondaryCallToken)
 
PBoolean IntrudeCall (const PString &remoteParty, unsigned capabilityLevel, void *userData=NULL)
 
PBoolean ParsePartyName (const PString &party, PString &alias, H323TransportAddress &address, OpalConnection::StringOptions *stringOptions=NULL)
 
PSafePtr< H323ConnectionFindConnectionWithLock (const PString &token, PSafetyMode mode=PSafeReadWrite)
 
virtual PBoolean OnSendSignalSetup (H323Connection &connection, H323SignalPDU &setupPDU)
 
virtual PBoolean OnSendCallProceeding (H323Connection &connection, H323SignalPDU &callProceedingPDU)
 
virtual PBoolean OnSendConnect (H323Connection &connection, H323SignalPDU &connectPDU)
 
virtual PBoolean OnIncomingCall (H323Connection &connection, const H323SignalPDU &setupPDU, H323SignalPDU &alertingPDU)
 
virtual PBoolean OnOutgoingCall (H323Connection &conn, const H323SignalPDU &connectPDU)
 
virtual PBoolean OnCallTransferInitiate (H323Connection &connection, const PString &remoteParty)
 
virtual PBoolean OnCallTransferIdentify (H323Connection &connection)
 
virtual void OnSendARQ (H323Connection &conn, H225_AdmissionRequest &arq)
 
virtual
OpalConnection::AnswerCallResponse 
OnAnswerCall (H323Connection &connection, const PString &callerName, const H323SignalPDU &setupPDU, H323SignalPDU &connectPDU, H323SignalPDU &progressPDU)
 
virtual
OpalConnection::AnswerCallResponse 
OnAnswerCall (OpalConnection &connection, const PString &caller)
 
virtual PBoolean OnAlerting (H323Connection &connection, const H323SignalPDU &alertingPDU, const PString &user)
 
virtual PBoolean OnSendAlerting (H323Connection &connection, H323SignalPDU &alerting, const PString &calleeName, PBoolean withMedia)
 
virtual PBoolean OnSentAlerting (H323Connection &connection)
 
virtual PBoolean OnConnectionForwarded (H323Connection &connection, const PString &forwardParty, const H323SignalPDU &pdu)
 
virtual PBoolean ForwardConnection (H323Connection &connection, const PString &forwardParty, const H323SignalPDU &pdu)
 
virtual void OnConnectionEstablished (H323Connection &connection, const PString &token)
 
virtual PBoolean IsConnectionEstablished (const PString &token)
 
Logical Channels management
virtual PBoolean OnStartLogicalChannel (H323Connection &connection, H323Channel &channel)
 
virtual void OnClosedLogicalChannel (H323Connection &connection, const H323Channel &channel)
 
virtual void OnGatekeeperNATDetect (const PIPSocket::Address &publicAddr, H323TransportAddress &gkRouteAddress)
 
Service Control
virtual void OnHTTPServiceControl (unsigned operation, unsigned sessionId, const PString &url)
 
virtual void OnCallCreditServiceControl (const PString &amount, PBoolean mode)
 
virtual void OnServiceControlSession (unsigned type, unsigned sessionid, const H323ServiceControlSession &session, H323Connection *connection)
 
virtual H323ServiceControlSessionCreateServiceControlSession (const H225_ServiceControlDescriptor &contents)
 
Additional call services
virtual PBoolean OnCallIndependentSupplementaryService (const H323SignalPDU &setupPDU)
 
virtual PBoolean OnNegotiateConferenceCapabilities (const H323SignalPDU &setupPDU)
 

Protected Types

typedef map
< H323Connection::CompatibilityIssues,
PRegularExpression > 
CompatibilityEndpoints
 
- Protected Types inherited from OpalRTPEndPoint
typedef std::map
< OpalTransportAddress,
LocalRtpInfo
LocalRtpInfoMap
 

Protected Member Functions

bool InternalCreateGatekeeper (const H323TransportAddress &remoteAddress, const PString &localAddress)
 
void RestartGatekeeper ()
 
void GatekeeperMonitor ()
 
H323ConnectionInternalMakeCall (OpalCall &call, const PString &existingToken, const PString &callIdentity, unsigned capabilityLevel, const PString &remoteParty, void *userData, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)
 

Protected Attributes

PStringList localAliasNames
 
PStringList localAliasPatterns
 
PBoolean autoCallForward
 
PBoolean disableFastStart
 
PBoolean disableH245Tunneling
 
PBoolean disableH245inSetup
 
bool m_forceSymmetricTCS
 
PBoolean m_bH245Disabled
 
PBoolean canDisplayAmountString
 
PBoolean canEnforceDurationLimit
 
unsigned callIntrusionProtectionLevel
 
TerminalTypes terminalType
 
bool m_defaultH239Control
 
PBoolean clearCallOnRoundTripFail
 
PTimeInterval signallingChannelCallTimeout
 
PTimeInterval firstSignalPduTimeout
 
PTimeInterval endSessionTimeout
 
PTimeInterval masterSlaveDeterminationTimeout
 
unsigned masterSlaveDeterminationRetries
 
PTimeInterval capabilityExchangeTimeout
 
PTimeInterval logicalChannelTimeout
 
PTimeInterval requestModeTimeout
 
PTimeInterval roundTripDelayTimeout
 
PTimeInterval roundTripDelayRate
 
PTimeInterval gatekeeperRequestTimeout
 
unsigned gatekeeperRequestRetries
 
PTimeInterval rasRequestTimeout
 
unsigned rasRequestRetries
 
PTimeInterval registrationTimeToLive
 
PString gkAccessTokenOID
 
bool m_sendGRQ
 
bool m_oneSignalAddressInRRQ
 
PTimeInterval callTransferT1
 
PTimeInterval callTransferT2
 
PTimeInterval callTransferT3
 
PTimeInterval callTransferT4
 
PTimeInterval callIntrusionT1
 
PTimeInterval callIntrusionT2
 
PTimeInterval callIntrusionT3
 
PTimeInterval callIntrusionT4
 
PTimeInterval callIntrusionT5
 
PTimeInterval callIntrusionT6
 
PSafeDictionary< PString,
H323Connection
m_connectionsByCallId
 
std::set< OpalTransportPtrm_reusableTransports
 
H323Capabilities m_capabilities
 
PList< H323Gatekeeperm_gatekeepers
 
PString m_gatekeeperUsername
 
PString m_gatekeeperPassword
 
PINDEX m_gatekeeperAliasLimit
 
bool m_gatekeeperSimulatePattern
 
PThread * m_gatekeeperMonitor
 
bool m_gatekeeperMonitorStop
 
PSyncPoint m_gatekeeperMonitorTickle
 
PMutex m_gatekeeperMutex
 
H323CallIdentityDict m_secondaryConnectionsActive
 
PAtomicInteger m_nextH450CallIdentity
 
bool m_disableH460
 Next available callIdentity for H450 Transfer operations via consultation. More...
 
H460_FeatureSetm_features
 
CompatibilityEndpoints m_compatibility
 
- Protected Attributes inherited from OpalRTPEndPoint
LocalRtpInfoMap m_connectionsByRtpLocalAddr
 
PMutex m_connectionsByRtpMutex
 
- Protected Attributes inherited from OpalEndPoint
OpalManagermanager
 
PCaselessString prefixName
 
Attributes m_attributes
 
PINDEX m_maxSizeUDP
 
OpalProductInfo productInfo
 
PString defaultLocalPartyName
 
PString defaultDisplayName
 
PStringArray m_mediaCryptoSuites
 
OpalBandwidth m_initialRxBandwidth
 
OpalBandwidth m_initialTxBandwidth
 
OpalConnection::StringOptions m_defaultStringOptions
 
OpalConnection::SendUserInputModes defaultSendUserInputMode
 
OpalListenerList listeners
 
OpalEndPoint::ConnectionDict connectionsActive
 

Gatekeeper management

enum  { MaxGatekeeperAliasLimit = 1000000 }
 
bool UseGatekeeper (const PString &address=PString::Empty(), const PString &identifier=PString::Empty(), const PString &localAddress=PString::Empty())
 
bool SetGatekeeper (const PString &address, const PString &localAddress=PString::Empty())
 
bool SetGatekeeperZone (const PString &address, const PString &identifier, const PString &localAddress=PString::Empty())
 
bool LocateGatekeeper (const PString &identifier, const PString &localAddress=PString::Empty())
 
bool DiscoverGatekeeper (const PString &localAddress=PString::Empty())
 
virtual H323GatekeeperCreateGatekeeper (H323Transport *transport)
 
H323GatekeeperGetGatekeeper () const
 
const PList< H323GatekeeperGetGatekeepers () const
 
PBoolean IsRegisteredWithGatekeeper () const
 
PBoolean RemoveGatekeeper (int reason=-1)
 
virtual void SetGatekeeperPassword (const PString &password, const PString &username=PString::Empty())
 
virtual const PString & GetGatekeeperUsername () const
 
virtual const PString & GetGatekeeperPassword () const
 
void SetGatekeeperAliasLimit (PINDEX limit)
 
PINDEX GetGatekeeperAliasLimit () const
 
void SetGatekeeperSimulatePattern (bool sim)
 
bool GetGatekeeperSimulatePattern () const
 
virtual H235Authenticators CreateAuthenticators ()
 
virtual void OnGatekeeperStatus (H323Gatekeeper::RegistrationFailReasons status)
 

Member variable access

enum  TerminalTypes {
  e_TerminalOnly = 50, e_TerminalAndMC = 70, e_GatewayOnly = 60, e_GatewayAndMC = 80,
  e_GatewayAndMCWithDataMP = 90, e_GatewayAndMCWithAudioMP = 100, e_GatewayAndMCWithAVMP = 110, e_GatekeeperOnly = 120,
  e_GatekeeperWithDataMP = 130, e_GatekeeperWithAudioMP = 140, e_GatekeeperWithAVMP = 150, e_MCUOnly = 160,
  e_MCUWithDataMP = 170, e_MCUWithAudioMP = 180, e_MCUWithAVMP = 190
}
 
virtual void SetDefaultLocalPartyName (const PString &name)
 
virtual void SetLocalUserName (const PString &name)
 
virtual const PString & GetLocalUserName () const
 
bool AddAliasNames (const PStringList &names)
 
bool AddAliasName (const PString &name)
 
bool RemoveAliasName (const PString &name)
 
const PStringList & GetAliasNames () const
 
bool AddAliasNamePattern (const PString &pattern)
 
bool RemoveAliasNamePattern (const PString &pattern)
 
void SetAliasNamePatterns (const PStringList &patterns)
 
const PStringList & GetAliasNamePatterns () const
 
const PString & GetDefaultILSServer () const
 
void SetDefaultILSServer (const PString &server)
 
PBoolean IsFastStartDisabled () const
 
void DisableFastStart (PBoolean mode)
 
PBoolean IsH245TunnelingDisabled () const
 
void DisableH245Tunneling (PBoolean mode)
 
PBoolean IsH245inSetupDisabled () const
 
void DisableH245inSetup (PBoolean mode)
 
bool IsForcedSymmetricTCS () const
 
void ForceSymmetricTCS (bool mode)
 
PBoolean IsH245Disabled () const
 
void DisableH245 (PBoolean bH245Disabled)
 
PBoolean CanDisplayAmountString () const
 
void SetCanDisplayAmountString (PBoolean mode)
 
PBoolean CanEnforceDurationLimit () const
 
void SetCanEnforceDurationLimit (PBoolean mode)
 
unsigned GetCallIntrusionProtectionLevel () const
 
void SetCallIntrusionProtectionLevel (unsigned level)
 
virtual void OnReceivedInitiateReturnError ()
 
PBoolean CanAutoCallForward () const
 
const H323CapabilitiesGetCapabilities () const
 
void SetTerminalType (TerminalTypes type)
 
TerminalTypes GetTerminalType () const
 
PBoolean IsTerminal () const
 
PBoolean IsGateway () const
 
PBoolean IsGatekeeper () const
 
PBoolean IsMCU () const
 
unsigned GetMinAudioJitterDelay () const
 
unsigned GetMaxAudioJitterDelay () const
 
void SetAudioJitterDelay (unsigned minDelay, unsigned maxDelay)
 
bool GetDefaultH239Control () const
 
void SetDefaultH239Control (bool on)
 
bool H460Disabled () const
 
void DisableH460 (bool disable=true)
 
H460_FeatureSetGetFeatures () const
 
virtual H460_FeatureSetCreateFeatureSet (H323Connection *connection)
 
virtual H460_FeatureSetInternalCreateFeatureSet (H323Connection *connection)
 
virtual PBoolean OnSendFeatureSet (H460_MessageType pduType, H225_FeatureSet &)
 
virtual void OnReceiveFeatureSet (H460_MessageType pduType, const H225_FeatureSet &)
 
virtual bool OnLoadFeature (H460_Feature &feature)
 
virtual PBoolean IsLocalAddress (const PIPSocket::Address &remoteAddress) const
 
virtual void TranslateTCPAddress (PIPSocket::Address &localAddr, const PIPSocket::Address &remoteAddr)
 
const PTimeInterval & GetSignallingChannelCallTimeout () const
 
const PTimeInterval & GetFirstSignalPduTimeout () const
 
const PTimeInterval & GetEndSessionTimeout () const
 
const PTimeInterval & GetMasterSlaveDeterminationTimeout () const
 
unsigned GetMasterSlaveDeterminationRetries () const
 
const PTimeInterval & GetCapabilityExchangeTimeout () const
 
const PTimeInterval & GetLogicalChannelTimeout () const
 
const PTimeInterval & GetRequestModeTimeout () const
 
const PTimeInterval & GetRoundTripDelayTimeout () const
 
const PTimeInterval & GetRoundTripDelayRate () const
 
PBoolean ShouldClearCallOnRoundTripFail () const
 
const PTimeInterval & GetNoMediaTimeout () const
 
void SetNoMediaTimeout (const PTimeInterval &newInterval)
 
const PTimeInterval & GetGatekeeperRequestTimeout () const
 
unsigned GetGatekeeperRequestRetries () const
 
const PTimeInterval & GetRasRequestTimeout () const
 
unsigned GetRasRequestRetries () const
 
const PTimeInterval & GetGatekeeperTimeToLive () const
 
void SetGatekeeperTimeToLive (const PTimeInterval &ttl)
 
const PString & GetGkAccessTokenOID () const
 
void SetGkAccessTokenOID (const PString &token)
 
bool GetSendGRQ () const
 
void SetSendGRQ (bool v)
 
bool GetOneSignalAddressInRRQ () const
 
void SetOneSignalAddressInRRQ (bool v)
 
const PTimeInterval & GetCallTransferT1 () const
 
const PTimeInterval & GetCallTransferT2 () const
 
const PTimeInterval & GetCallTransferT3 () const
 
const PTimeInterval & GetCallTransferT4 () const
 
const PTimeInterval & GetCallIntrusionT1 () const
 
const PTimeInterval & GetCallIntrusionT2 () const
 
const PTimeInterval & GetCallIntrusionT3 () const
 
const PTimeInterval & GetCallIntrusionT4 () const
 
const PTimeInterval & GetCallIntrusionT5 () const
 
const PTimeInterval & GetCallIntrusionT6 () const
 
H323CallIdentityDict & GetCallIdentityDictionary ()
 
unsigned GetNextH450CallIdentityValue () const
 
virtual PString GetDefaultTransport () const
 
virtual WORD GetDefaultSignalPort () const
 
PString GetCompatibility (H323Connection::CompatibilityIssues issue) const
 Gets the current regular expression for the compatibility issue. More...
 
bool SetCompatibility (H323Connection::CompatibilityIssues issue, const PString &regex)
 
bool AddCompatibility (H323Connection::CompatibilityIssues issue, const PString &regex)
 
bool HasCompatibilityIssue (H323Connection::CompatibilityIssues issue, const OpalProductInfo &productInfo) const
 Determine if we must compensate for remote endpoint. More...
 
static int ParseAliasPatternRange (const PString &pattern, PString &start, PString &end)
 

Detailed Description

This class manages the H323 endpoint. An endpoint may have zero or more listeners to create incoming connections or zero or more outgoing connections initiated via the MakeCall() function. Once a conection exists it is managed by this class instance.

The main thing this class embodies is the capabilities of the application, that is the codecs and protocols it is capable of.

An application may create a descendent off this class and overide the CreateConnection() function, if they require a descendent of H323Connection to be created. This would be quite likely in most applications.

Member Typedef Documentation

typedef map<H323Connection::CompatibilityIssues, PRegularExpression> H323EndPoint::CompatibilityEndpoints
protected

Member Enumeration Documentation

anonymous enum
Enumerator
DefaultTcpSignalPort 
anonymous enum
Enumerator
MaxGatekeeperAliasLimit 

Endpoint types.

Enumerator
e_TerminalOnly 
e_TerminalAndMC 
e_GatewayOnly 
e_GatewayAndMC 
e_GatewayAndMCWithDataMP 
e_GatewayAndMCWithAudioMP 
e_GatewayAndMCWithAVMP 
e_GatekeeperOnly 
e_GatekeeperWithDataMP 
e_GatekeeperWithAudioMP 
e_GatekeeperWithAVMP 
e_MCUOnly 
e_MCUWithDataMP 
e_MCUWithAudioMP 
e_MCUWithAVMP 

Constructor & Destructor Documentation

H323EndPoint::H323EndPoint ( OpalManager manager)

Create a new endpoint.

H323EndPoint::~H323EndPoint ( )

Destroy endpoint.

Member Function Documentation

bool H323EndPoint::AddAliasName ( const PString &  name)

Add an alias name to be used for the local end of any connections. If the alias name already exists in the list then is is not added again.

The list defaults to the value set in the SetLocalUserName() function. Note that calling SetLocalUserName() will clear the alias list.

Parameters
nameNew alias name to add
bool H323EndPoint::AddAliasNamePattern ( const PString &  pattern)

Add an alias pattern. If the pattern already exists in the list then is is not added again.

Parameters
patternPattern to add
bool H323EndPoint::AddAliasNames ( const PStringList &  names)

Add alias names to be used for the local end of any connections. If an alias name already exists in the list then is is not added again.

The list defaults to the value set in the SetLocalUserName() function. Note that this will clear the alias list and the first entry will become the value returned by GetLocalUserName().

Parameters
namesNew alias names to add
bool H323EndPoint::AddCompatibility ( H323Connection::CompatibilityIssues  issue,
const PString &  regex 
)

Indicate a compatibility issue with remote endpoint product type. This will add to the regular expression for the issue a new value to try and match. It effectively adds "|" + regex to the existing regular expression.

Note the regular expression is always "extended".

Parameters
issueIssue being worked around
regexRegular expression for endpoint matching, see OpalProductInfo::AsString()
PBoolean H323EndPoint::CanAutoCallForward ( ) const
inline

See if should automatically do call forward of connection.

References autoCallForward.

PBoolean H323EndPoint::CanDisplayAmountString ( ) const
inline

Get the flag indicating the endpoint can display an amount string.

References canDisplayAmountString.

PBoolean H323EndPoint::CanEnforceDurationLimit ( ) const
inline

Get the flag indicating the call will automatically clear after a time.

References canEnforceDurationLimit.

void H323EndPoint::ConsultationTransfer ( const PString &  primaryCallToken,
const PString &  secondaryCallToken 
)

Transfer the call through consultation so the remote party in the primary call is connected to the called party in the second call using H.450.2. This sends a Call Transfer Identify Invoke message from the A-Party (transferring endpoint) to the C-Party (transferred-to endpoint).

Parameters
primaryCallTokenToken of primary call
secondaryCallTokenToken of secondary call
virtual H235Authenticators H323EndPoint::CreateAuthenticators ( )
virtual

Create a list of authenticators for gatekeeper.

virtual H323Connection* H323EndPoint::CreateConnection ( OpalCall call,
const PString &  token,
void *  userData,
OpalTransport transport,
const PString &  alias,
const H323TransportAddress address,
H323SignalPDU setupPDU,
unsigned  options = 0,
OpalConnection::StringOptions stringOptions = NULL 
)
virtual

Create a connection that uses the specified call.

Parameters
callCall object to attach the connection to
tokenCall token for new connection
userDataArbitrary user data from MakeConnection
transportTransport for connection
aliasAlias for outgoing call
addressAddress for outgoing call
setupPDUSetup PDU for incoming call
stringOptionscomplex string options
virtual H460_FeatureSet* H323EndPoint::CreateFeatureSet ( H323Connection connection)
virtual

Get the Endpoint FeatureSet This creates a new instance of the featureSet

virtual H323Gatekeeper* H323EndPoint::CreateGatekeeper ( H323Transport transport)
virtual

Create a gatekeeper. This allows the application writer to have the gatekeeper as a descendent of the H323Gatekeeper in order to add functionality to the base capabilities in the library.

The default creates an instance of the H323Gatekeeper class.

Parameters
transportTransport over which gatekeepers communicates.
virtual H323ServiceControlSession* H323EndPoint::CreateServiceControlSession ( const H225_ServiceControlDescriptor &  contents)
virtual

Create the service control session object.

void H323EndPoint::DisableFastStart ( PBoolean  mode)
inline

Set the default fast start mode.

Parameters
modeNew default mode

References disableFastStart.

void H323EndPoint::DisableH245 ( PBoolean  bH245Disabled)
inline

Disable/Enable H.245, used at least for h450.7 calls

Parameters
bH245Disabledtrue if h245 has to be disabled

References m_bH245Disabled.

void H323EndPoint::DisableH245inSetup ( PBoolean  mode)
inline

Set the default H.245 tunneling mode.

Parameters
modeNew default mode

References disableH245inSetup.

void H323EndPoint::DisableH245Tunneling ( PBoolean  mode)
inline

Set the default H.245 tunneling mode.

Parameters
modeNew default mode

References disableH245Tunneling.

void H323EndPoint::DisableH460 ( bool  disable = true)
inline

Disable all FeatureSets. Use this for pre H323v4 interoperability

References m_disableH460.

bool H323EndPoint::DiscoverGatekeeper ( const PString &  localAddress = PString::Empty())

Discover and select gatekeeper. This function will use the automatic gatekeeper discovery methods to locate the first gatekeeper on a particular transport.

Note the transport being passed in will be deleted becomes owned by the H323Gatekeeper created by this function and will be deleted by it. Also if transport is NULL then a H323TransportUDP is created.

Parameters
localAddressLocal interface to use.
PSafePtr<H323Connection> H323EndPoint::FindConnectionWithLock ( const PString &  token,
PSafetyMode  mode = PSafeReadWrite 
)

Find a connection that uses the specified token. This searches the endpoint for the connection that contains the token as provided by functions such as MakeCall(). if not found it will then search for the string representation of the CallIdentifier for the connection, and finally try for the string representation of the ConferenceIdentifier.

Note the caller of this function MUSt call the H323Connection::Unlock() function if this function returns a non-NULL pointer. If it does not then a deadlock can occur.

Parameters
tokenToken to identify connection
void H323EndPoint::ForceSymmetricTCS ( bool  mode)
inline

Set the default H.245 tunneling mode.

Parameters
modeNew default mode

References m_forceSymmetricTCS.

virtual PBoolean H323EndPoint::ForwardConnection ( H323Connection connection,
const PString &  forwardParty,
const H323SignalPDU pdu 
)
virtual

Forward the call using the same token as the specified connection. Return true if the call is being redirected.

The default behaviour will replace the current call in the endpoints call list using the same token as the call being redirected. Not that even though the same token is being used the actual object is completely mad anew.

Parameters
connectionConnection to be forwarded
forwardPartyRemote party to forward to
pduFull PDU initiating forwarding
virtual PBoolean H323EndPoint::GarbageCollection ( )
virtual
Execute garbage collection for endpoint.

Returns true if all garbage has been collected. Default behaviour deletes the objects in the connectionsActive list.

Reimplemented from OpalEndPoint.

void H323EndPoint::GatekeeperMonitor ( )
protected
const PStringList& H323EndPoint::GetAliasNamePatterns ( ) const
inline

Get the alias patterns.

References localAliasPatterns.

const PStringList& H323EndPoint::GetAliasNames ( ) const
inline

Get the user name to be used for the local end of any connections. This defaults to the logged in user as obtained from the PProcess::GetUserName() function.

References localAliasNames.

virtual PStringList H323EndPoint::GetAvailableStringOptions ( ) const
virtual

Get available string option names.

Reimplemented from OpalEndPoint.

H323CallIdentityDict& H323EndPoint::GetCallIdentityDictionary ( )
inline

Get the dictionary of <callIdentities, connections>

References m_secondaryConnectionsActive.

unsigned H323EndPoint::GetCallIntrusionProtectionLevel ( ) const
inline

Get Call Intrusion Protection Level of the end point.

References callIntrusionProtectionLevel.

const PTimeInterval& H323EndPoint::GetCallIntrusionT1 ( ) const
inline

Get Call Intrusion timers timeout

References callIntrusionT1.

const PTimeInterval& H323EndPoint::GetCallIntrusionT2 ( ) const
inline

References callIntrusionT2.

const PTimeInterval& H323EndPoint::GetCallIntrusionT3 ( ) const
inline

References callIntrusionT3.

const PTimeInterval& H323EndPoint::GetCallIntrusionT4 ( ) const
inline

References callIntrusionT4.

const PTimeInterval& H323EndPoint::GetCallIntrusionT5 ( ) const
inline

References callIntrusionT5.

const PTimeInterval& H323EndPoint::GetCallIntrusionT6 ( ) const
inline

References callIntrusionT6.

const PTimeInterval& H323EndPoint::GetCallTransferT1 ( ) const
inline

Get the default timeout for Call Transfer Timer CT-T1.

References callTransferT1.

const PTimeInterval& H323EndPoint::GetCallTransferT2 ( ) const
inline

Get the default timeout for Call Transfer Timer CT-T2.

References callTransferT2.

const PTimeInterval& H323EndPoint::GetCallTransferT3 ( ) const
inline

Get the default timeout for Call Transfer Timer CT-T3.

References callTransferT3.

const PTimeInterval& H323EndPoint::GetCallTransferT4 ( ) const
inline

Get the default timeout for Call Transfer Timer CT-T4.

References callTransferT4.

const H323Capabilities& H323EndPoint::GetCapabilities ( ) const
inline

Get the "template" capability table for this endpoint. This table contains all known capabilities from which specific capabilities for a H323Connection, local and remote, are derived.

References m_capabilities.

const PTimeInterval& H323EndPoint::GetCapabilityExchangeTimeout ( ) const
inline

Get the default timeout for H245 capability exchange negotiations.

References capabilityExchangeTimeout.

PString H323EndPoint::GetCompatibility ( H323Connection::CompatibilityIssues  issue) const

Gets the current regular expression for the compatibility issue.

Parameters
issueIssue being worked around
bool H323EndPoint::GetDefaultH239Control ( ) const
inline

Get the default H.239 control capability.

References m_defaultH239Control.

const PString& H323EndPoint::GetDefaultILSServer ( ) const
inline

Get the default ILS server to use for user lookup.

References OpalManager::GetDefaultILSServer(), and OpalEndPoint::manager.

virtual WORD H323EndPoint::GetDefaultSignalPort ( ) const
virtual

Get the default signal port for this endpoint.

Reimplemented from OpalEndPoint.

virtual PString H323EndPoint::GetDefaultTransport ( ) const
virtual

Get the default transports for the endpoint type. Overrides the default behaviour to return udp and tcp.

Reimplemented from OpalEndPoint.

const PTimeInterval& H323EndPoint::GetEndSessionTimeout ( ) const
inline

Get the default timeout for waiting on an end session.

References endSessionTimeout.

H460_FeatureSet* H323EndPoint::GetFeatures ( ) const
inline

References m_features.

const PTimeInterval& H323EndPoint::GetFirstSignalPduTimeout ( ) const
inline

Get the default timeout for first signalling PDU on a connection

References firstSignalPduTimeout.

H323Gatekeeper* H323EndPoint::GetGatekeeper ( ) const
inline

Get the gatekeeper we are registered with.

References m_gatekeepers.

PINDEX H323EndPoint::GetGatekeeperAliasLimit ( ) const
inline

Get gatekeeper alias limit in single RRQ.

References m_gatekeeperAliasLimit.

virtual const PString& H323EndPoint::GetGatekeeperPassword ( ) const
inlinevirtual

Get the H.235 password for the gatekeeper.

References m_gatekeeperPassword.

unsigned H323EndPoint::GetGatekeeperRequestRetries ( ) const
inline

Get the default retries for GatekeeperRequest and Gatekeeper discovery.

References gatekeeperRequestRetries.

const PTimeInterval& H323EndPoint::GetGatekeeperRequestTimeout ( ) const
inline

Get the default timeout for GatekeeperRequest and Gatekeeper discovery.

References gatekeeperRequestTimeout.

const PList<H323Gatekeeper> H323EndPoint::GetGatekeepers ( ) const
inline

Get all the gatekeepers we are registered with.

References m_gatekeepers.

bool H323EndPoint::GetGatekeeperSimulatePattern ( ) const
inline

Get gatekeeper flag to simulate alias pattern with aliases.

References m_gatekeeperSimulatePattern.

const PTimeInterval& H323EndPoint::GetGatekeeperTimeToLive ( ) const
inline

Get the default time for gatekeeper to reregister. A value of zero disables the keep alive facility.

References registrationTimeToLive.

virtual const PString& H323EndPoint::GetGatekeeperUsername ( ) const
inlinevirtual

Get the H.235 username for the gatekeeper.

References m_gatekeeperUsername.

const PString& H323EndPoint::GetGkAccessTokenOID ( ) const
inline

Get the iNow Gatekeeper Access Token OID.

References gkAccessTokenOID.

virtual const PString& H323EndPoint::GetLocalUserName ( ) const
inlinevirtual

Get the user name to be used for the local end of any connections. This defaults to the logged in user as obtained from the PProcess::GetUserName() function.

References localAliasNames.

const PTimeInterval& H323EndPoint::GetLogicalChannelTimeout ( ) const
inline

Get the default timeout for H245 logical channel negotiations.

References logicalChannelTimeout.

unsigned H323EndPoint::GetMasterSlaveDeterminationRetries ( ) const
inline

Get the default retries for H245 master slave negotiations.

References masterSlaveDeterminationRetries.

const PTimeInterval& H323EndPoint::GetMasterSlaveDeterminationTimeout ( ) const
inline

Get the default timeout for master slave negotiations.

References masterSlaveDeterminationTimeout.

unsigned H323EndPoint::GetMaxAudioJitterDelay ( ) const
inline

Get the default maximum audio delay jitter parameter. Defaults to 250ms.

References OpalManager::GetMaxAudioJitterDelay(), and OpalEndPoint::manager.

unsigned H323EndPoint::GetMinAudioJitterDelay ( ) const
inline

Get the default maximum audio jitter delay parameter. Defaults to 50ms

References OpalManager::GetMinAudioJitterDelay(), and OpalEndPoint::manager.

unsigned H323EndPoint::GetNextH450CallIdentityValue ( ) const
inline

Get the next available invoke Id for H450 operations

References m_nextH450CallIdentity.

const PTimeInterval& H323EndPoint::GetNoMediaTimeout ( ) const
inline

Get the amount of time with no media that should cause call to clear

References OpalManager::GetNoMediaTimeout(), and OpalEndPoint::manager.

bool H323EndPoint::GetOneSignalAddressInRRQ ( ) const
inline

Get flag to indicate whether to only use one signal address in gatekeeper registration

References m_oneSignalAddressInRRQ.

unsigned H323EndPoint::GetRasRequestRetries ( ) const
inline

Get the default retries for RAS protocol transations.

References rasRequestRetries.

const PTimeInterval& H323EndPoint::GetRasRequestTimeout ( ) const
inline

Get the default timeout for RAS protocol transactions.

References rasRequestTimeout.

const PTimeInterval& H323EndPoint::GetRequestModeTimeout ( ) const
inline

Get the default timeout for H245 request mode negotiations.

References logicalChannelTimeout.

const PTimeInterval& H323EndPoint::GetRoundTripDelayRate ( ) const
inline

Get the default rate H245 round trip delay is calculated by connection.

References roundTripDelayRate.

const PTimeInterval& H323EndPoint::GetRoundTripDelayTimeout ( ) const
inline

Get the default timeout for H245 round trip delay negotiations.

References roundTripDelayTimeout.

bool H323EndPoint::GetSendGRQ ( ) const
inline

Get flag to indicate whether to send GRQ on gatekeeper registration

References m_sendGRQ.

const PTimeInterval& H323EndPoint::GetSignallingChannelCallTimeout ( ) const
inline

Get the default timeout for calling another endpoint.

References signallingChannelCallTimeout.

TerminalTypes H323EndPoint::GetTerminalType ( ) const
inline

Get the endpoint terminal type.

References terminalType.

bool H323EndPoint::H460Disabled ( ) const
inline

Is the FeatureSet disabled

References m_disableH460.

bool H323EndPoint::HasCompatibilityIssue ( H323Connection::CompatibilityIssues  issue,
const OpalProductInfo productInfo 
) const

Determine if we must compensate for remote endpoint.

Parameters
issueIssue being worked around
productInfoProduct into for check for issue
virtual H460_FeatureSet* H323EndPoint::InternalCreateFeatureSet ( H323Connection connection)
virtual
bool H323EndPoint::InternalCreateGatekeeper ( const H323TransportAddress remoteAddress,
const PString &  localAddress 
)
protected
H323Connection* H323EndPoint::InternalMakeCall ( OpalCall call,
const PString &  existingToken,
const PString &  callIdentity,
unsigned  capabilityLevel,
const PString &  remoteParty,
void *  userData,
unsigned int  options = 0,
OpalConnection::StringOptions stringOptions = NULL 
)
protected
Parameters
existingTokenExisting connection to be transferred
callIdentityCall identity of the secondary call (if it exists)
capabilityLevelIntrusion capability level
remotePartyRemote party to call
userDatauser data to pass to CreateConnection
optionsoptions to pass to connection
stringOptionscomplex string options
void H323EndPoint::InternalNewIncomingConnection ( OpalTransportPtr  transport,
bool  reused = false 
)
Parameters
transportTransport connection came in on
PBoolean H323EndPoint::IntrudeCall ( const PString &  remoteParty,
unsigned  capabilityLevel,
void *  userData = NULL 
)

Initiate Call intrusion Designed similar to MakeCall function

Parameters
remotePartyRemote party to intrude call
capabilityLevelCapability level
userDatauser data to pass to CreateConnection
virtual PBoolean H323EndPoint::IsConnectionEstablished ( const PString &  token)
virtual

Determine if a connection is established.

Parameters
tokenToken for identifying connection
PBoolean H323EndPoint::IsFastStartDisabled ( ) const
inline

Get the default fast start mode.

References disableFastStart.

bool H323EndPoint::IsForcedSymmetricTCS ( ) const
inline

Get the default H.245 tunneling mode.

References m_forceSymmetricTCS.

PBoolean H323EndPoint::IsGatekeeper ( ) const

Determine if endpoint is gatekeeper type.

PBoolean H323EndPoint::IsGateway ( ) const

Determine if endpoint is gateway type.

PBoolean H323EndPoint::IsH245Disabled ( ) const
inline

find out if h245 is disabled or enabled

Returns
true if h245 is disabled

References m_bH245Disabled.

PBoolean H323EndPoint::IsH245inSetupDisabled ( ) const
inline

Get the default H.245 tunneling mode.

References disableH245inSetup.

PBoolean H323EndPoint::IsH245TunnelingDisabled ( ) const
inline

Get the default H.245 tunneling mode.

References disableH245Tunneling.

virtual PBoolean H323EndPoint::IsLocalAddress ( const PIPSocket::Address &  remoteAddress) const
inlinevirtual

Determine if the address is "local", ie does not need STUN

References OpalManager::IsLocalAddress(), and OpalEndPoint::manager.

PBoolean H323EndPoint::IsMCU ( ) const

Determine if endpoint is gatekeeper type.

PBoolean H323EndPoint::IsRegisteredWithGatekeeper ( ) const

Return if endpoint is registered with gatekeeper.

PBoolean H323EndPoint::IsTerminal ( ) const

Determine if endpoint is terminal type.

bool H323EndPoint::LocateGatekeeper ( const PString &  identifier,
const PString &  localAddress = PString::Empty() 
)

Locate and select gatekeeper. This function will use the automatic gatekeeper discovery methods to locate the gatekeeper on the particular transport that has the specified gatekeeper identifier name. This is often the "Zone" for the gatekeeper.

Note the transport being passed in will be deleted becomes owned by the H323Gatekeeper created by this function and will be deleted by it. Also if transport is NULL then a H323TransportUDP is created.

Parameters
identifierIdentifier of gatekeeper to locate.
localAddressLocal interface to use.
virtual PSafePtr<OpalConnection> H323EndPoint::MakeConnection ( OpalCall call,
const PString &  party,
void *  userData = NULL,
unsigned int  options = 0,
OpalConnection::StringOptions stringOptions = NULL 
)
virtual

Set up a connection to a remote party. This is called from the OpalManager::SetUpConnection() function once it has determined that this is the endpoint for the protocol.

The general form for this party parameter is:

 [proto:][alias@][transport$]address[:port]

where the various fields will have meanings specific to the endpoint type. For example, with H.323 it could be "h323:Fred@site.com" which indicates a user Fred at gatekeeper size.com. Whereas for the PSTN endpoint it could be "pstn:5551234" which is to call 5551234 on the first available PSTN line.

The proto field is optional when passed to a specific endpoint. If it is present, however, it must agree with the endpoints protocol name or false is returned.

This function usually returns almost immediately with the connection continuing to occur in a new background thread.

If false is returned then the connection could not be established. For example if a PSTN endpoint is used and the assiciated line is engaged then it may return immediately. Returning a non-NULL value does not mean that the connection will succeed, only that an attempt is being made.

The default behaviour is pure.

Parameters
callOwner of connection
partyRemote party to call
userDataArbitrary data to pass to connection
optionsoptions to pass to connection

Implements OpalEndPoint.

virtual void H323EndPoint::NewIncomingConnection ( OpalListener listener,
const OpalTransportPtr transport 
)
virtual

Handle new incoming connetion from listener.

Parameters
listenerListner that created transport
transportTransport connection came in on
virtual PBoolean H323EndPoint::OnAlerting ( H323Connection connection,
const H323SignalPDU alertingPDU,
const PString &  user 
)
virtual

Call back for remote party being alerted. This function is called from the SendSignalSetup() function after it receives the optional Alerting PDU from the remote endpoint. That is when the remote "phone" is "ringing".

If false is returned the connection is aborted and a Release Complete PDU is sent.

The default behaviour simply returns true.

Parameters
connectionConnection that was established
alertingPDUReceived Alerting PDU
userUsername of remote endpoint
virtual OpalConnection::AnswerCallResponse H323EndPoint::OnAnswerCall ( H323Connection connection,
const PString &  callerName,
const H323SignalPDU setupPDU,
H323SignalPDU connectPDU,
H323SignalPDU progressPDU 
)
virtual

Call back for answering an incoming call. This function is a H.323 specific version of OpalEndPoint::OnAnswerCall that contains additional information that applies only to H.323.

By default this calls OpalEndPoint::OnAnswerCall, which returns

Parameters
connectionConnection that was established
callerNameName of caller
setupPDUReceived setup PDU
connectPDUConnect PDU to send.
progressPDUProgress PDU to send.
virtual OpalConnection::AnswerCallResponse H323EndPoint::OnAnswerCall ( OpalConnection connection,
const PString &  caller 
)
virtual

Call back for answering an incoming call. This function is called after the connection has been acknowledged but before the connection is established

This gives the application time to wait for some event before signalling to the endpoint that the connection is to proceed. For example the user pressing an "Answer call" button.

If AnswerCallDenied is returned the connection is aborted and the connetion specific end call PDU is sent. If AnswerCallNow is returned then the connection proceeding, Finally if AnswerCallPending is returned then the protocol negotiations are paused until the AnsweringCall() function is called.

The default behaviour simply returns AnswerNow.

Reimplemented from OpalEndPoint.

virtual void H323EndPoint::OnCallCreditServiceControl ( const PString &  amount,
PBoolean  mode 
)
virtual

Call back for call credit information. An application may override this to display call credit information on registration, or when a call is started.

The canDisplayAmountString member variable must also be set to true for this to operate.

The default behaviour does nothing.

Parameters
amountUTF-8 string for amount, including currency.
modeFlag indicating that calls will debit the account.
virtual PBoolean H323EndPoint::OnCallIndependentSupplementaryService ( const H323SignalPDU setupPDU)
virtual

Called when an endpoint receives a SETUP PDU with a conference goal of "callIndependentSupplementaryService"

The default behaviour is to return false, which will close the connection

virtual PBoolean H323EndPoint::OnCallTransferIdentify ( H323Connection connection)
virtual

Handle a transfer via consultation. This gives the transferred-to user an opportunity to abort the transfer. The default behaviour just returns true.

Parameters
connectionConnection to transfer
virtual PBoolean H323EndPoint::OnCallTransferInitiate ( H323Connection connection,
const PString &  remoteParty 
)
virtual

Handle a connection transfer. This gives the application an opportunity to abort the transfer. The default behaviour just returns true.

Parameters
connectionConnection to transfer
remotePartyParty transferring to.
virtual void H323EndPoint::OnClosedLogicalChannel ( H323Connection connection,
const H323Channel channel 
)
virtual

Call back for closed a logical channel.

The default behaviour does nothing.

Parameters
connectionConnection for the channel
channelChannel being started
virtual void H323EndPoint::OnConnectionEstablished ( H323Connection connection,
const PString &  token 
)
virtual

A call back function whenever a connection is established. This indicates that a connection to a remote endpoint was established with a control channel and zero or more logical channels.

The default behaviour does nothing.

Parameters
connectionConnection that was established
tokenToken for identifying connection
virtual PBoolean H323EndPoint::OnConnectionForwarded ( H323Connection connection,
const PString &  forwardParty,
const H323SignalPDU pdu 
)
virtual

A call back function when a connection indicates it is to be forwarded. An H323 application may handle this call back so it can make complicated decisions on if the call forward ius to take place. If it decides to do so it must call MakeCall() and return true.

The default behaviour simply returns false and that the automatic call forwarding should take place. See ForwardConnection()

Parameters
connectionConnection to be forwarded
forwardPartyRemote party to forward to
pduFull PDU initiating forwarding
virtual void H323EndPoint::OnGatekeeperNATDetect ( const PIPSocket::Address &  publicAddr,
H323TransportAddress gkRouteAddress 
)
virtual

Call back from GK admission confirm to notify the Endpoint it is behind a NAT (GNUGK Gatekeeper). The default does nothing. Override this to notify the user they are behind a NAT.

Parameters
gkRouteAddress

Public address as returned by the Gatekeeper> Gatekeeper Route Address

virtual void H323EndPoint::OnGatekeeperStatus ( H323Gatekeeper::RegistrationFailReasons  status)
virtual

Called when the gatekeeper status changes.

Reimplemented in H323ConsoleEndPoint.

virtual void H323EndPoint::OnHTTPServiceControl ( unsigned  operation,
unsigned  sessionId,
const PString &  url 
)
virtual

Call back for HTTP based Service Control. An application may override this to use an HTTP based channel using a resource designated by the session ID. For example the session ID can correspond to a browser window and the

The default behaviour does nothing.

Parameters
operationControl operation
sessionIdSession ID for HTTP page
urlURL to use.
virtual PBoolean H323EndPoint::OnIncomingCall ( H323Connection connection,
const H323SignalPDU setupPDU,
H323SignalPDU alertingPDU 
)
virtual

Call back for incoming call. This function is called from the OnReceivedSignalSetup() function before it sends the Alerting PDU. It gives an opportunity for an application to alter the reply before transmission to the other endpoint.

If false is returned the connection is aborted and a Release Complete PDU is sent.

The default behaviour simply returns true.

Parameters
connectionConnection that was established
setupPDUReceived setup PDU
alertingPDUAlerting PDU to send
virtual bool H323EndPoint::OnLoadFeature ( H460_Feature feature)
virtual

Callback when creating Feature Instance. This can be used to disable features on a case by case basis by returning FALSE Default returns TRUE

virtual PBoolean H323EndPoint::OnNegotiateConferenceCapabilities ( const H323SignalPDU setupPDU)
virtual

Called when an endpoint receives a SETUP PDU with a conference goal of "capability_negotiation"

The default behaviour is to return false, which will close the connection

virtual PBoolean H323EndPoint::OnOutgoingCall ( H323Connection conn,
const H323SignalPDU connectPDU 
)
virtual

Called when an outgoing call connects If false is returned the connection is aborted and a Release Complete PDU is sent.

The default behaviour simply returns true.

virtual void H323EndPoint::OnReceivedInitiateReturnError ( )
virtual

Called from H.450 OnReceivedInitiateReturnError

virtual void H323EndPoint::OnReceiveFeatureSet ( H460_MessageType  pduType,
const H225_FeatureSet &   
)
virtual

Called when an incoming PDU contains a feature set

virtual void H323EndPoint::OnReleased ( OpalConnection connection)
virtual

A call back function whenever a connection is broken. This function can do any internal cleaning up and waiting on background threads that may be using the connection object.

Note that there is not a one to one relationship with the OnEstablishedConnection() function. This function may be called without that function being called. For example if MakeConnection() was used but the call never completed.

Classes that override this function should make sure they call the ancestor version for correct operation.

An application will not typically call this function as it is used by the OpalManager during a release of the connection.

The default behaviour removes the connection from the internal database and calls the OpalManager function of the same name.

Parameters
connectionConnection that was established

Reimplemented from OpalEndPoint.

virtual PBoolean H323EndPoint::OnSendAlerting ( H323Connection connection,
H323SignalPDU alerting,
const PString &  calleeName,
PBoolean  withMedia 
)
virtual

A call back function when the alerting is about to be sent, can be used by the application to alter the alerting Pdu

Returns
if false, then the alerting is not sent
Parameters
connectiononnection that was established
alertingAlerting PDU to modify
calleeNameName of endpoint being alerted.
withMediaOpen media with alerting
virtual void H323EndPoint::OnSendARQ ( H323Connection conn,
H225_AdmissionRequest &  arq 
)
virtual

Callback for ARQ send to a gatekeeper. This allows the endpoint to change or check fields in the ARQ before it is sent.

virtual PBoolean H323EndPoint::OnSendCallProceeding ( H323Connection connection,
H323SignalPDU callProceedingPDU 
)
virtual

Adjust call proceeding PDU being sent. This function is called from the OnReceivedSignalSetup() function before it sends the Call Proceeding PDU. It gives an opportunity for an application to alter the request before transmission to the other endpoint. If this function returns false then the Call Proceeding PDU is not sent at all.

The default behaviour simply returns true.

Parameters
connectionthe connection associated to the call proceeding
callProceedingPDUthe call processding to modify
Returns
if false, do no send the connect pdu
virtual PBoolean H323EndPoint::OnSendConnect ( H323Connection connection,
H323SignalPDU connectPDU 
)
virtual

Adjust call connect PDU being sent. This function is called from the H323Connection::SetConnected function before it sends the connect PDU. It gives an opportunity for an application to alter the request before transmission to the other endpoint. If this function returns false then the connect PDU is not sent at all.

The default behaviour simply returns true.

Parameters
connectionthe connection associated to the connect
connectPDUthe connect to modify
Returns
if false, do no send the connect pdu
virtual PBoolean H323EndPoint::OnSendFeatureSet ( H460_MessageType  pduType,
H225_FeatureSet &   
)
virtual

Called when an outgoing PDU requires a feature set

virtual PBoolean H323EndPoint::OnSendSignalSetup ( H323Connection connection,
H323SignalPDU setupPDU 
)
virtual

OnSendSignalSetup is a hook for the appliation to attach H450 info in setup, for instance, H450.7 Activate or Deactivate

Parameters
connectionthe connection associated to the setup
pduSetupthe setup message to modify
Returns
if false, do no send the setup pdu
virtual PBoolean H323EndPoint::OnSentAlerting ( H323Connection connection)
virtual

A call back function when the alerting has been sent, can be used by the application to send the connect as soon as the alerting has been sent.

virtual void H323EndPoint::OnServiceControlSession ( unsigned  type,
unsigned  sessionid,
const H323ServiceControlSession session,
H323Connection connection 
)
virtual

Handle incoming service control session information. Default behaviour calls session.OnChange()

virtual bool H323EndPoint::OnSetGatewayPrefixes ( PStringList &  prefixes) const
virtual

Set the gateway prefixes Override this to set the acceptable prefixes to the gatekeeper

virtual PBoolean H323EndPoint::OnStartLogicalChannel ( H323Connection connection,
H323Channel channel 
)
virtual

Call back for opening a logical channel.

The default behaviour simply returns true.

Parameters
connectionConnection for the channel
channelChannel being started
static int H323EndPoint::ParseAliasPatternRange ( const PString &  pattern,
PString &  start,
PString &  end 
)
static
PBoolean H323EndPoint::ParsePartyName ( const PString &  party,
PString &  alias,
H323TransportAddress address,
OpalConnection::StringOptions stringOptions = NULL 
)

Parse a party address into alias and transport components. An appropriate transport is determined from the remoteParty parameter. The general form for this parameter is [alias@][transport$]host[:port] where the default alias is the same as the host, the default transport is "ip" and the default port is 1720.

Parameters
partyParty name string.
aliasParsed alias name
addressParsed transport address
stringOptionsString options parsed from party name
bool H323EndPoint::RemoveAliasName ( const PString &  name)

Remove an alias name. Note, you cannot remove the last alias name.

Parameters
nameAlias name to remove
bool H323EndPoint::RemoveAliasNamePattern ( const PString &  pattern)

Remove an alias pattern.

Parameters
patternPattern to add
PBoolean H323EndPoint::RemoveGatekeeper ( int  reason = -1)

Unregister and delete the gatekeeper we are registered with. The return value indicates false if there was an error during the unregistration. However the gatekeeper is still removed and its instance deleted regardless of this error.

Parameters
reasonReason for gatekeeper removal
void H323EndPoint::RestartGatekeeper ( )
protected
void H323EndPoint::SetAliasNamePatterns ( const PStringList &  patterns)
inline

Set all alias patterns. Overwrites all existing patterns.

Parameters
patternsPatterns to set

References localAliasPatterns.

void H323EndPoint::SetAudioJitterDelay ( unsigned  minDelay,
unsigned  maxDelay 
)
inline

Set the maximum audio delay jitter parameter.

Parameters
minDelayNew minimum jitter buffer delay in milliseconds
maxDelayNew maximum jitter buffer delay in milliseconds

References OpalEndPoint::manager, and OpalManager::SetAudioJitterDelay().

void H323EndPoint::SetCallIntrusionProtectionLevel ( unsigned  level)
inline

Set Call Intrusion Protection Level of the end point.

Parameters
levelNew level from 0 to 3

References callIntrusionProtectionLevel.

void H323EndPoint::SetCanDisplayAmountString ( PBoolean  mode)
inline

Set the flag indicating the endpoint can display an amount string.

Parameters
modeNew default mode

References canDisplayAmountString.

void H323EndPoint::SetCanEnforceDurationLimit ( PBoolean  mode)
inline

Set the flag indicating the call will automatically clear after a time.

Parameters
modeNew default mode

References canEnforceDurationLimit.

bool H323EndPoint::SetCompatibility ( H323Connection::CompatibilityIssues  issue,
const PString &  regex 
)

Indicate a compatibility issue with remote endpoint product type. Note the regular expression is always "extended".

Returns
true of regular expression is legal.
Parameters
issueIssue being worked around
regexRegular expression for endpoint matching, see OpalProductInfo::AsString()
void H323EndPoint::SetDefaultH239Control ( bool  on)
inline

Set the default H.239 control capability.

Parameters
onH.239 control capability is to be sent to remote

References m_defaultH239Control.

void H323EndPoint::SetDefaultILSServer ( const PString &  server)
inline

Set the default ILS server to use for user lookup.

References OpalEndPoint::manager, and OpalManager::SetDefaultILSServer().

virtual void H323EndPoint::SetDefaultLocalPartyName ( const PString &  name)
virtual

Set the default local party name for all connections on this endpoint.

Parameters
nameName for local party

Reimplemented from OpalEndPoint.

virtual void H323EndPoint::SetEndpointTypeInfo ( H225_EndpointType &  info) const
virtual

Set the endpoint information in H225 PDU's.

bool H323EndPoint::SetGatekeeper ( const PString &  address,
const PString &  localAddress = PString::Empty() 
)

Select and register with an explicit gatekeeper. This will use the specified transport and a string giving a transport dependent address to locate a specific gatekeeper. The endpoint will register with that gatekeeper and, if successful, set it as the current gatekeeper used by this endpoint.

Note the transport being passed in will be deleted by this function or the H323Gatekeeper object it becomes associated with. Also if transport is NULL then a H323TransportUDP is created.

Parameters
addressAddress of gatekeeper to use.
localAddressLocal interface to use.
void H323EndPoint::SetGatekeeperAliasLimit ( PINDEX  limit)

Set gatekeeper alias limit in single RRQ.

Parameters
limitNew limit for aliases
virtual void H323EndPoint::SetGatekeeperPassword ( const PString &  password,
const PString &  username = PString::Empty() 
)
virtual

Set the H.235 password for the gatekeeper.

void H323EndPoint::SetGatekeeperSimulatePattern ( bool  sim)
inline

Set gatekeeper flag to simulate alias pattern with aliases. This will generate separate individual aliases for ranges in the pattern list.

References m_gatekeeperSimulatePattern.

void H323EndPoint::SetGatekeeperTimeToLive ( const PTimeInterval &  ttl)
inline

Set the default time for gatekeeper to reregister. A value of zero disables the keep alive facility.

References registrationTimeToLive.

bool H323EndPoint::SetGatekeeperZone ( const PString &  address,
const PString &  identifier,
const PString &  localAddress = PString::Empty() 
)

Select and register with an explicit gatekeeper and zone. This will use the specified transport and a string giving a transport dependent address to locate a specific gatekeeper. The endpoint will register with that gatekeeper and, if successful, set it as the current gatekeeper used by this endpoint.

The gatekeeper identifier is set to the spplied parameter to allow the gatekeeper to either allocate a zone or sub-zone, or refuse to register if the zones do not match.

Note the transport being passed in will be deleted by this function or the H323Gatekeeper object it becomes associated with. Also if transport is NULL then a H323TransportUDP is created.

Parameters
addressAddress of gatekeeper to use.
identifierIdentifier of gatekeeper to use.
localAddressLocal interface to use.
virtual bool H323EndPoint::SetGatewaySupportedProtocol ( H225_ArrayOf_SupportedProtocols &  protocols) const
virtual

Set the Gateway supported protocol default always H.323

void H323EndPoint::SetGkAccessTokenOID ( const PString &  token)
inline

Set the iNow Gatekeeper Access Token OID.

References gkAccessTokenOID.

virtual void H323EndPoint::SetH221NonStandardInfo ( H225_H221NonStandard &  info) const
virtual

Set the H221NonStandard information in H225 PDU's.

virtual void H323EndPoint::SetLocalUserName ( const PString &  name)
virtual

Set the user name to be used for the local end of any connections. This defaults to the logged in user as obtained from the PProcess::GetUserName() function.

Note that this name is technically the first alias for the endpoint. Additional aliases may be added by the use of the AddAliasName() function, however that list will be cleared when this function is used.

Parameters
nameLocal name of endpoint (prime alias)
void H323EndPoint::SetNoMediaTimeout ( const PTimeInterval &  newInterval)
inline

Set the amount of time with no media that should cause call to clear

Parameters
newIntervalNew timeout for media

References OpalEndPoint::manager, and OpalManager::SetNoMediaTimeout().

void H323EndPoint::SetOneSignalAddressInRRQ ( bool  v)
inline

Sent flag to indicate whether to only use one signal address in gatekeeper registration

References m_oneSignalAddressInRRQ.

void H323EndPoint::SetSendGRQ ( bool  v)
inline

Sent flag to indicate whether to send GRQ on gatekeeper registration

References m_sendGRQ.

void H323EndPoint::SetTerminalType ( TerminalTypes  type)
inline

Get the endpoint terminal type.

References terminalType.

virtual PBoolean H323EndPoint::SetupTransfer ( const PString &  token,
const PString &  callIdentity,
const PString &  remoteParty,
void *  userData = NULL 
)
virtual

Setup the transfer of an existing call (connection) to a new remote party using H.450.2. This sends a Call Transfer Setup Invoke message from the B-Party (transferred endpoint) to the C-Party (transferred-to endpoint).

If the transport parameter is NULL the transport is determined from the remoteParty description. The general form for this parameter is [alias@][transport$]host[:port] where the default alias is the same as the host, the default transport is "ip" and the default port is 1720.

This function returns almost immediately with the transfer occurring in a new background thread.

This function is declared virtual to allow an application to override the function and get the new call token of the forwarded call.

Parameters
tokenExisting connection to be transferred
callIdentityCall identity of the secondary call (if it exists)
remotePartyRemote party to transfer the existing call to
userDatauser data to pass to CreateConnection
virtual void H323EndPoint::SetVendorIdentifierInfo ( H225_VendorIdentifier &  info) const
virtual

Set the vendor information in H225 PDU's.

PBoolean H323EndPoint::ShouldClearCallOnRoundTripFail ( ) const
inline

Get the flag for clearing a call if the round trip delay calculation fails.

References clearCallOnRoundTripFail.

virtual void H323EndPoint::ShutDown ( )
virtual

Shut down the endpoint, this is called by the OpalManager just before destroying the object and can be handy to make sure some things are stopped before the vtable gets clobbered.

Reimplemented from OpalEndPoint.

void H323EndPoint::TickleGatekeeperMonitor ( )
inline
void H323EndPoint::TransferCall ( const PString &  token,
const PString &  remoteParty,
const PString &  callIdentity = PString::Empty() 
)

Initiate the transfer of an existing call (connection) to a new remote party using H.450.2. This sends a Call Transfer Initiate Invoke message from the A-Party (transferring endpoint) to the B-Party (transferred endpoint).

Parameters
tokenExisting connection to be transferred
remotePartyRemote party to transfer the existing call to
callIdentityCall Identity of secondary call if present
virtual void H323EndPoint::TranslateTCPAddress ( PIPSocket::Address &  localAddr,
const PIPSocket::Address &  remoteAddr 
)
virtual

Provide TCP address translation hook

bool H323EndPoint::UseGatekeeper ( const PString &  address = PString::Empty(),
const PString &  identifier = PString::Empty(),
const PString &  localAddress = PString::Empty() 
)

Use and register with an explicit gatekeeper. This will call other functions according to the following table:

address    identifier   function
empty      empty        DiscoverGatekeeper()
non-empty  empty        SetGatekeeper()
empty      non-empty    LocateGatekeeper()
non-empty  non-empty    SetGatekeeperZone()

The localAddress field, if non-empty, indicates the interface on which to look for the gatekeeper. An empty string is equivalent to "ip$*:*" which is any interface or port.

If the endpoint is already registered with a gatekeeper that meets the same criteria then the gatekeeper is not changed, otherwise it is deleted (with unregistration) and new one created and registered to.

Note that a gatekeeper address of "*" is treated like an empty string resulting in gatekeeper discovery.

Parameters
addressAddress of gatekeeper to use.
identifierIdentifier of gatekeeper to use.
localAddressLocal interface to use.

Field Documentation

PBoolean H323EndPoint::autoCallForward
protected

Referenced by CanAutoCallForward().

unsigned H323EndPoint::callIntrusionProtectionLevel
protected
PTimeInterval H323EndPoint::callIntrusionT1
protected

Call Intrusion Timers

Referenced by GetCallIntrusionT1().

PTimeInterval H323EndPoint::callIntrusionT2
protected

Referenced by GetCallIntrusionT2().

PTimeInterval H323EndPoint::callIntrusionT3
protected

Referenced by GetCallIntrusionT3().

PTimeInterval H323EndPoint::callIntrusionT4
protected

Referenced by GetCallIntrusionT4().

PTimeInterval H323EndPoint::callIntrusionT5
protected

Referenced by GetCallIntrusionT5().

PTimeInterval H323EndPoint::callIntrusionT6
protected

Referenced by GetCallIntrusionT6().

PTimeInterval H323EndPoint::callTransferT1
protected

Referenced by GetCallTransferT1().

PTimeInterval H323EndPoint::callTransferT2
protected

Referenced by GetCallTransferT2().

PTimeInterval H323EndPoint::callTransferT3
protected

Referenced by GetCallTransferT3().

PTimeInterval H323EndPoint::callTransferT4
protected

Referenced by GetCallTransferT4().

PBoolean H323EndPoint::canDisplayAmountString
protected
PBoolean H323EndPoint::canEnforceDurationLimit
protected
PTimeInterval H323EndPoint::capabilityExchangeTimeout
protected
PBoolean H323EndPoint::clearCallOnRoundTripFail
protected
PBoolean H323EndPoint::disableFastStart
protected
PBoolean H323EndPoint::disableH245inSetup
protected
PBoolean H323EndPoint::disableH245Tunneling
protected
PTimeInterval H323EndPoint::endSessionTimeout
protected

Referenced by GetEndSessionTimeout().

PTimeInterval H323EndPoint::firstSignalPduTimeout
protected
unsigned H323EndPoint::gatekeeperRequestRetries
protected
PTimeInterval H323EndPoint::gatekeeperRequestTimeout
protected
PString H323EndPoint::gkAccessTokenOID
protected
PStringList H323EndPoint::localAliasNames
protected

Referenced by GetAliasNames(), and GetLocalUserName().

PStringList H323EndPoint::localAliasPatterns
protected
PTimeInterval H323EndPoint::logicalChannelTimeout
protected
PBoolean H323EndPoint::m_bH245Disabled
protected

Referenced by DisableH245(), and IsH245Disabled().

H323Capabilities H323EndPoint::m_capabilities
protected

Referenced by GetCapabilities().

CompatibilityEndpoints H323EndPoint::m_compatibility
protected
PSafeDictionary<PString, H323Connection> H323EndPoint::m_connectionsByCallId
protected
bool H323EndPoint::m_defaultH239Control
protected
bool H323EndPoint::m_disableH460
protected

Next available callIdentity for H450 Transfer operations via consultation.

Referenced by DisableH460(), and H460Disabled().

H460_FeatureSet* H323EndPoint::m_features
protected

Referenced by GetFeatures().

bool H323EndPoint::m_forceSymmetricTCS
protected
PINDEX H323EndPoint::m_gatekeeperAliasLimit
protected

Referenced by GetGatekeeperAliasLimit().

PThread* H323EndPoint::m_gatekeeperMonitor
protected
bool H323EndPoint::m_gatekeeperMonitorStop
protected
PSyncPoint H323EndPoint::m_gatekeeperMonitorTickle
protected

Referenced by TickleGatekeeperMonitor().

PMutex H323EndPoint::m_gatekeeperMutex
protected
PString H323EndPoint::m_gatekeeperPassword
protected

Referenced by GetGatekeeperPassword().

PList<H323Gatekeeper> H323EndPoint::m_gatekeepers
protected

Referenced by GetGatekeeper(), and GetGatekeepers().

bool H323EndPoint::m_gatekeeperSimulatePattern
protected
PString H323EndPoint::m_gatekeeperUsername
protected

Referenced by GetGatekeeperUsername().

PAtomicInteger H323EndPoint::m_nextH450CallIdentity
mutableprotected
bool H323EndPoint::m_oneSignalAddressInRRQ
protected
std::set<OpalTransportPtr> H323EndPoint::m_reusableTransports
protected
H323CallIdentityDict H323EndPoint::m_secondaryConnectionsActive
protected
bool H323EndPoint::m_sendGRQ
protected

Referenced by GetSendGRQ(), and SetSendGRQ().

unsigned H323EndPoint::masterSlaveDeterminationRetries
protected
PTimeInterval H323EndPoint::masterSlaveDeterminationTimeout
protected
unsigned H323EndPoint::rasRequestRetries
protected

Referenced by GetRasRequestRetries().

PTimeInterval H323EndPoint::rasRequestTimeout
protected

Referenced by GetRasRequestTimeout().

PTimeInterval H323EndPoint::registrationTimeToLive
protected
PTimeInterval H323EndPoint::requestModeTimeout
protected
PTimeInterval H323EndPoint::roundTripDelayRate
protected

Referenced by GetRoundTripDelayRate().

PTimeInterval H323EndPoint::roundTripDelayTimeout
protected
PTimeInterval H323EndPoint::signallingChannelCallTimeout
protected
TerminalTypes H323EndPoint::terminalType
protected

Referenced by GetTerminalType(), and SetTerminalType().


The documentation for this class was generated from the following file: