OPAL
Version 3.14.3
|
#include <h323ep.h>
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< OpalConnection > | MakeConnection (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 H323Connection * | 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 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< H323Connection > | FindConnectionWithLock (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 H323ServiceControlSession * | CreateServiceControlSession (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 |
![]() | |
typedef std::map < OpalTransportAddress, LocalRtpInfo > | LocalRtpInfoMap |
Protected Member Functions | |
bool | InternalCreateGatekeeper (const H323TransportAddress &remoteAddress, const PString &localAddress) |
void | RestartGatekeeper () |
void | GatekeeperMonitor () |
H323Connection * | InternalMakeCall (OpalCall &call, const PString &existingToken, const PString &callIdentity, unsigned capabilityLevel, const PString &remoteParty, void *userData, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL) |
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 H323Gatekeeper * | CreateGatekeeper (H323Transport *transport) |
H323Gatekeeper * | GetGatekeeper () const |
const PList< H323Gatekeeper > | GetGatekeepers () 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 H323Capabilities & | GetCapabilities () 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_FeatureSet * | GetFeatures () const |
virtual H460_FeatureSet * | CreateFeatureSet (H323Connection *connection) |
virtual H460_FeatureSet * | InternalCreateFeatureSet (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 ®ex) |
bool | AddCompatibility (H323Connection::CompatibilityIssues issue, const PString ®ex) |
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) |
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.
|
protected |
Endpoint types.
H323EndPoint::H323EndPoint | ( | OpalManager & | manager | ) |
Create a new endpoint.
H323EndPoint::~H323EndPoint | ( | ) |
Destroy endpoint.
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.
name | New 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.
pattern | Pattern 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().
names | New 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".
issue | Issue being worked around |
regex | Regular expression for endpoint matching, see OpalProductInfo::AsString() |
|
inline |
See if should automatically do call forward of connection.
References autoCallForward.
|
inline |
Get the flag indicating the endpoint can display an amount string.
References canDisplayAmountString.
|
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).
primaryCallToken | Token of primary call |
secondaryCallToken | Token of secondary call |
|
virtual |
Create a list of authenticators for gatekeeper.
|
virtual |
Create a connection that uses the specified call.
call | Call object to attach the connection to |
token | Call token for new connection |
userData | Arbitrary user data from MakeConnection |
transport | Transport for connection |
alias | Alias for outgoing call |
address | Address for outgoing call |
setupPDU | Setup PDU for incoming call |
stringOptions | complex string options |
|
virtual |
Get the Endpoint FeatureSet This creates a new instance of the featureSet
|
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.
transport | Transport over which gatekeepers communicates. |
|
virtual |
Create the service control session object.
|
inline |
|
inline |
Disable/Enable H.245, used at least for h450.7 calls
bH245Disabled | true if h245 has to be disabled |
References m_bH245Disabled.
|
inline |
Set the default H.245 tunneling mode.
mode | New default mode |
References disableH245inSetup.
|
inline |
Set the default H.245 tunneling mode.
mode | New default mode |
References disableH245Tunneling.
|
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.
localAddress | Local 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.
token | Token to identify connection |
|
inline |
Set the default H.245 tunneling mode.
mode | New default mode |
References m_forceSymmetricTCS.
|
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.
connection | Connection to be forwarded |
forwardParty | Remote party to forward to |
pdu | Full PDU initiating forwarding |
|
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.
|
protected |
|
inline |
Get the alias patterns.
References localAliasPatterns.
|
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 |
Get available string option names.
Reimplemented from OpalEndPoint.
|
inline |
Get the dictionary of <callIdentities, connections>
References m_secondaryConnectionsActive.
|
inline |
Get Call Intrusion Protection Level of the end point.
References callIntrusionProtectionLevel.
|
inline |
Get Call Intrusion timers timeout
References callIntrusionT1.
|
inline |
References callIntrusionT2.
|
inline |
References callIntrusionT3.
|
inline |
References callIntrusionT4.
|
inline |
References callIntrusionT5.
|
inline |
References callIntrusionT6.
|
inline |
Get the default timeout for Call Transfer Timer CT-T1.
References callTransferT1.
|
inline |
Get the default timeout for Call Transfer Timer CT-T2.
References callTransferT2.
|
inline |
Get the default timeout for Call Transfer Timer CT-T3.
References callTransferT3.
|
inline |
Get the default timeout for Call Transfer Timer CT-T4.
References callTransferT4.
|
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.
|
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.
issue | Issue being worked around |
|
inline |
Get the default H.239 control capability.
References m_defaultH239Control.
|
inline |
Get the default ILS server to use for user lookup.
References OpalManager::GetDefaultILSServer(), and OpalEndPoint::manager.
|
virtual |
Get the default signal port for this endpoint.
Reimplemented from OpalEndPoint.
|
virtual |
Get the default transports for the endpoint type. Overrides the default behaviour to return udp and tcp.
Reimplemented from OpalEndPoint.
|
inline |
Get the default timeout for waiting on an end session.
References endSessionTimeout.
|
inline |
References m_features.
|
inline |
Get the default timeout for first signalling PDU on a connection
References firstSignalPduTimeout.
|
inline |
Get the gatekeeper we are registered with.
References m_gatekeepers.
|
inline |
Get gatekeeper alias limit in single RRQ.
References m_gatekeeperAliasLimit.
|
inlinevirtual |
Get the H.235 password for the gatekeeper.
References m_gatekeeperPassword.
|
inline |
Get the default retries for GatekeeperRequest and Gatekeeper discovery.
References gatekeeperRequestRetries.
|
inline |
Get the default timeout for GatekeeperRequest and Gatekeeper discovery.
References gatekeeperRequestTimeout.
|
inline |
Get all the gatekeepers we are registered with.
References m_gatekeepers.
|
inline |
Get gatekeeper flag to simulate alias pattern with aliases.
References m_gatekeeperSimulatePattern.
|
inline |
Get the default time for gatekeeper to reregister. A value of zero disables the keep alive facility.
References registrationTimeToLive.
|
inlinevirtual |
Get the H.235 username for the gatekeeper.
References m_gatekeeperUsername.
|
inline |
Get the iNow Gatekeeper Access Token OID.
References gkAccessTokenOID.
|
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.
|
inline |
Get the default timeout for H245 logical channel negotiations.
References logicalChannelTimeout.
|
inline |
Get the default retries for H245 master slave negotiations.
References masterSlaveDeterminationRetries.
|
inline |
Get the default timeout for master slave negotiations.
References masterSlaveDeterminationTimeout.
|
inline |
Get the default maximum audio delay jitter parameter. Defaults to 250ms.
References OpalManager::GetMaxAudioJitterDelay(), and OpalEndPoint::manager.
|
inline |
Get the default maximum audio jitter delay parameter. Defaults to 50ms
References OpalManager::GetMinAudioJitterDelay(), and OpalEndPoint::manager.
|
inline |
Get the next available invoke Id for H450 operations
References m_nextH450CallIdentity.
|
inline |
Get the amount of time with no media that should cause call to clear
References OpalManager::GetNoMediaTimeout(), and OpalEndPoint::manager.
|
inline |
Get flag to indicate whether to only use one signal address in gatekeeper registration
References m_oneSignalAddressInRRQ.
|
inline |
Get the default retries for RAS protocol transations.
References rasRequestRetries.
|
inline |
Get the default timeout for RAS protocol transactions.
References rasRequestTimeout.
|
inline |
Get the default timeout for H245 request mode negotiations.
References logicalChannelTimeout.
|
inline |
Get the default rate H245 round trip delay is calculated by connection.
References roundTripDelayRate.
|
inline |
Get the default timeout for H245 round trip delay negotiations.
References roundTripDelayTimeout.
|
inline |
Get flag to indicate whether to send GRQ on gatekeeper registration
References m_sendGRQ.
|
inline |
Get the default timeout for calling another endpoint.
References signallingChannelCallTimeout.
|
inline |
Get the endpoint terminal type.
References terminalType.
|
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.
issue | Issue being worked around |
productInfo | Product into for check for issue |
|
virtual |
|
protected |
|
protected |
existingToken | Existing connection to be transferred |
callIdentity | Call identity of the secondary call (if it exists) |
capabilityLevel | Intrusion capability level |
remoteParty | Remote party to call |
userData | user data to pass to CreateConnection |
options | options to pass to connection |
stringOptions | complex string options |
void H323EndPoint::InternalNewIncomingConnection | ( | OpalTransportPtr | transport, |
bool | reused = false |
||
) |
transport | Transport connection came in on |
PBoolean H323EndPoint::IntrudeCall | ( | const PString & | remoteParty, |
unsigned | capabilityLevel, | ||
void * | userData = NULL |
||
) |
Initiate Call intrusion Designed similar to MakeCall function
remoteParty | Remote party to intrude call |
capabilityLevel | Capability level |
userData | user data to pass to CreateConnection |
|
virtual |
Determine if a connection is established.
token | Token for identifying connection |
|
inline |
Get the default fast start mode.
References disableFastStart.
|
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.
|
inline |
|
inline |
Get the default H.245 tunneling mode.
References disableH245inSetup.
|
inline |
Get the default H.245 tunneling mode.
References disableH245Tunneling.
|
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.
identifier | Identifier of gatekeeper to locate. |
localAddress | Local interface to use. |
|
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.
call | Owner of connection |
party | Remote party to call |
userData | Arbitrary data to pass to connection |
options | options to pass to connection |
Implements OpalEndPoint.
|
virtual |
Handle new incoming connetion from listener.
listener | Listner that created transport |
transport | Transport connection came in on |
|
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.
connection | Connection that was established |
alertingPDU | Received Alerting PDU |
user | Username of remote endpoint |
|
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
connection | Connection that was established |
callerName | Name of caller |
setupPDU | Received setup PDU |
connectPDU | Connect PDU to send. |
progressPDU | Progress PDU to send. |
|
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 |
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.
amount | UTF-8 string for amount, including currency. |
mode | Flag indicating that calls will debit the account. |
|
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 |
Handle a transfer via consultation. This gives the transferred-to user an opportunity to abort the transfer. The default behaviour just returns true.
connection | Connection to transfer |
|
virtual |
Handle a connection transfer. This gives the application an opportunity to abort the transfer. The default behaviour just returns true.
connection | Connection to transfer |
remoteParty | Party transferring to. |
|
virtual |
Call back for closed a logical channel.
The default behaviour does nothing.
connection | Connection for the channel |
channel | Channel being started |
|
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.
connection | Connection that was established |
token | Token for identifying connection |
|
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()
connection | Connection to be forwarded |
forwardParty | Remote party to forward to |
pdu | Full PDU initiating forwarding |
|
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.
gkRouteAddress |
|
|
virtual |
Called when the gatekeeper status changes.
Reimplemented in H323ConsoleEndPoint.
|
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.
operation | Control operation |
sessionId | Session ID for HTTP page |
url | URL to use. |
|
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.
connection | Connection that was established |
setupPDU | Received setup PDU |
alertingPDU | Alerting PDU to send |
|
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 |
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 |
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 |
Called from H.450 OnReceivedInitiateReturnError
|
virtual |
Called when an incoming PDU contains a feature set
|
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.
connection | Connection that was established |
Reimplemented from OpalEndPoint.
|
virtual |
A call back function when the alerting is about to be sent, can be used by the application to alter the alerting Pdu
connection | onnection that was established |
alerting | Alerting PDU to modify |
calleeName | Name of endpoint being alerted. |
withMedia | Open media with alerting |
|
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 |
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.
connection | the connection associated to the call proceeding |
callProceedingPDU | the call processding to modify |
|
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.
connection | the connection associated to the connect |
connectPDU | the connect to modify |
|
virtual |
Called when an outgoing PDU requires a feature set
|
virtual |
OnSendSignalSetup is a hook for the appliation to attach H450 info in setup, for instance, H450.7 Activate or Deactivate
connection | the connection associated to the setup |
pduSetup | the setup message to modify |
|
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 |
Handle incoming service control session information. Default behaviour calls session.OnChange()
|
virtual |
Set the gateway prefixes Override this to set the acceptable prefixes to the gatekeeper
|
virtual |
Call back for opening a logical channel.
The default behaviour simply returns true.
connection | Connection for the channel |
channel | Channel being started |
|
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.
party | Party name string. |
alias | Parsed alias name |
address | Parsed transport address |
stringOptions | String options parsed from party name |
bool H323EndPoint::RemoveAliasName | ( | const PString & | name | ) |
Remove an alias name. Note, you cannot remove the last alias name.
name | Alias name to remove |
bool H323EndPoint::RemoveAliasNamePattern | ( | const PString & | pattern | ) |
Remove an alias pattern.
pattern | Pattern 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.
reason | Reason for gatekeeper removal |
|
protected |
|
inline |
Set all alias patterns. Overwrites all existing patterns.
patterns | Patterns to set |
References localAliasPatterns.
|
inline |
Set the maximum audio delay jitter parameter.
minDelay | New minimum jitter buffer delay in milliseconds |
maxDelay | New maximum jitter buffer delay in milliseconds |
References OpalEndPoint::manager, and OpalManager::SetAudioJitterDelay().
|
inline |
Set Call Intrusion Protection Level of the end point.
level | New level from 0 to 3 |
References callIntrusionProtectionLevel.
|
inline |
Set the flag indicating the endpoint can display an amount string.
mode | New default mode |
References canDisplayAmountString.
|
inline |
Set the flag indicating the call will automatically clear after a time.
mode | New 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".
issue | Issue being worked around |
regex | Regular expression for endpoint matching, see OpalProductInfo::AsString() |
|
inline |
Set the default H.239 control capability.
on | H.239 control capability is to be sent to remote |
References m_defaultH239Control.
|
inline |
Set the default ILS server to use for user lookup.
References OpalEndPoint::manager, and OpalManager::SetDefaultILSServer().
|
virtual |
Set the default local party name for all connections on this endpoint.
name | Name for local party |
Reimplemented from OpalEndPoint.
|
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.
address | Address of gatekeeper to use. |
localAddress | Local interface to use. |
void H323EndPoint::SetGatekeeperAliasLimit | ( | PINDEX | limit | ) |
Set gatekeeper alias limit in single RRQ.
limit | New limit for aliases |
|
virtual |
Set the H.235 password for the gatekeeper.
|
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.
|
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.
address | Address of gatekeeper to use. |
identifier | Identifier of gatekeeper to use. |
localAddress | Local interface to use. |
|
virtual |
Set the Gateway supported protocol default always H.323
|
inline |
Set the iNow Gatekeeper Access Token OID.
References gkAccessTokenOID.
|
virtual |
Set the H221NonStandard information in H225 PDU's.
|
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.
name | Local name of endpoint (prime alias) |
|
inline |
Set the amount of time with no media that should cause call to clear
newInterval | New timeout for media |
References OpalEndPoint::manager, and OpalManager::SetNoMediaTimeout().
|
inline |
Sent flag to indicate whether to only use one signal address in gatekeeper registration
References m_oneSignalAddressInRRQ.
|
inline |
Sent flag to indicate whether to send GRQ on gatekeeper registration
References m_sendGRQ.
|
inline |
Get the endpoint terminal type.
References terminalType.
|
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.
token | Existing connection to be transferred |
callIdentity | Call identity of the secondary call (if it exists) |
remoteParty | Remote party to transfer the existing call to |
userData | user data to pass to CreateConnection |
|
virtual |
Set the vendor information in H225 PDU's.
|
inline |
Get the flag for clearing a call if the round trip delay calculation fails.
References clearCallOnRoundTripFail.
|
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.
|
inline |
References m_gatekeeperMonitorTickle.
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).
token | Existing connection to be transferred |
remoteParty | Remote party to transfer the existing call to |
callIdentity | Call Identity of secondary call if present |
|
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.
address | Address of gatekeeper to use. |
identifier | Identifier of gatekeeper to use. |
localAddress | Local interface to use. |
|
protected |
Referenced by CanAutoCallForward().
|
protected |
Referenced by GetCallIntrusionProtectionLevel(), and SetCallIntrusionProtectionLevel().
|
protected |
Call Intrusion Timers
Referenced by GetCallIntrusionT1().
|
protected |
Referenced by GetCallIntrusionT2().
|
protected |
Referenced by GetCallIntrusionT3().
|
protected |
Referenced by GetCallIntrusionT4().
|
protected |
Referenced by GetCallIntrusionT5().
|
protected |
Referenced by GetCallIntrusionT6().
|
protected |
Referenced by GetCallTransferT1().
|
protected |
Referenced by GetCallTransferT2().
|
protected |
Referenced by GetCallTransferT3().
|
protected |
Referenced by GetCallTransferT4().
|
protected |
Referenced by CanDisplayAmountString(), and SetCanDisplayAmountString().
|
protected |
Referenced by CanEnforceDurationLimit(), and SetCanEnforceDurationLimit().
|
protected |
Referenced by GetCapabilityExchangeTimeout().
|
protected |
Referenced by ShouldClearCallOnRoundTripFail().
|
protected |
Referenced by DisableFastStart(), and IsFastStartDisabled().
|
protected |
Referenced by DisableH245inSetup(), and IsH245inSetupDisabled().
|
protected |
Referenced by DisableH245Tunneling(), and IsH245TunnelingDisabled().
|
protected |
Referenced by GetEndSessionTimeout().
|
protected |
Referenced by GetFirstSignalPduTimeout().
|
protected |
Referenced by GetGatekeeperRequestRetries().
|
protected |
Referenced by GetGatekeeperRequestTimeout().
|
protected |
Referenced by GetGkAccessTokenOID(), and SetGkAccessTokenOID().
|
protected |
Referenced by GetAliasNames(), and GetLocalUserName().
|
protected |
Referenced by GetAliasNamePatterns(), and SetAliasNamePatterns().
|
protected |
Referenced by GetLogicalChannelTimeout(), and GetRequestModeTimeout().
|
protected |
Referenced by DisableH245(), and IsH245Disabled().
|
protected |
Referenced by GetCapabilities().
|
protected |
|
protected |
|
protected |
Referenced by GetDefaultH239Control(), and SetDefaultH239Control().
|
protected |
Next available callIdentity for H450 Transfer operations via consultation.
Referenced by DisableH460(), and H460Disabled().
|
protected |
Referenced by GetFeatures().
|
protected |
Referenced by ForceSymmetricTCS(), and IsForcedSymmetricTCS().
|
protected |
Referenced by GetGatekeeperAliasLimit().
|
protected |
|
protected |
|
protected |
Referenced by TickleGatekeeperMonitor().
|
protected |
|
protected |
Referenced by GetGatekeeperPassword().
|
protected |
Referenced by GetGatekeeper(), and GetGatekeepers().
|
protected |
Referenced by GetGatekeeperSimulatePattern(), and SetGatekeeperSimulatePattern().
|
protected |
Referenced by GetGatekeeperUsername().
|
mutableprotected |
Referenced by GetNextH450CallIdentityValue().
|
protected |
Referenced by GetOneSignalAddressInRRQ(), and SetOneSignalAddressInRRQ().
|
protected |
|
protected |
Referenced by GetCallIdentityDictionary().
|
protected |
Referenced by GetSendGRQ(), and SetSendGRQ().
|
protected |
Referenced by GetMasterSlaveDeterminationRetries().
|
protected |
Referenced by GetMasterSlaveDeterminationTimeout().
|
protected |
Referenced by GetRasRequestRetries().
|
protected |
Referenced by GetRasRequestTimeout().
|
protected |
Referenced by GetGatekeeperTimeToLive(), and SetGatekeeperTimeToLive().
|
protected |
|
protected |
Referenced by GetRoundTripDelayRate().
|
protected |
Referenced by GetRoundTripDelayTimeout().
|
protected |
Referenced by GetSignallingChannelCallTimeout().
|
protected |
Referenced by GetTerminalType(), and SetTerminalType().