OPAL Version 3.10.4

- Main Page
- Related Pages
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Data Structures | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
H323GatekeeperServer Class Reference

`#include <gkserver.h>`

Inheritance diagram for H323GatekeeperServer:

## Data Structures

class | StringMap

## Public Member Functions

WORD | GetDefaultUdpPort ()
PSafePtr< H323RegisteredEndPoint > | FindDestinationEndPoint (const OpalGloballyUniqueID &id, H323GatekeeperCall::Direction direction)
void | RemoveAlias (H323RegisteredEndPoint &ep, const PString &alias)
virtual PBoolean | OnSendDescriptorForEndpoint (H323RegisteredEndPoint &, H225_ArrayOf_AliasAddress &, H225_EndpointType &, H225_ArrayOf_AliasAddress &)
virtual PBoolean | AllowDuplicateAlias (const H225_ArrayOf_AliasAddress &)
virtual PBoolean | OnSendFeatureSet (unsigned, H225_FeatureSet &features) const
virtual void | OnReceiveFeatureSet (unsigned, const H225_FeatureSet &features) const
Construction
| H323GatekeeperServer (H323EndPoint &endpoint)
| ~H323GatekeeperServer ()
Protocol Handler Operations
virtual H323Transactor * | CreateListener (H323Transport *transport)
EndPoint Operations
virtual H323GatekeeperRequest::Response | OnDiscovery (H323GatekeeperGRQ &request)
virtual H323GatekeeperRequest::Response | OnRegistration (H323GatekeeperRRQ &request)
virtual H323GatekeeperRequest::Response | OnUnregistration (H323GatekeeperURQ &request)
virtual H323GatekeeperRequest::Response | OnInfoResponse (H323GatekeeperIRR &request)
virtual void | AddEndPoint (H323RegisteredEndPoint *ep)
virtual PBoolean | RemoveEndPoint (H323RegisteredEndPoint *ep)
virtual H323RegisteredEndPoint * | CreateRegisteredEndPoint (H323GatekeeperRRQ &request)
virtual PString | CreateEndPointIdentifier ()
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointByIdentifier (const PString &identifier, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointBySignalAddresses (const H225_ArrayOf_TransportAddress &addresses, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointBySignalAddress (const H323TransportAddress &address, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointByAliasAddress (const H225_AliasAddress &alias, PSafetyMode mode=PSafeReadWrite)
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointByAliasString (const PString &alias, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointByPartialAlias (const PString &alias, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323RegisteredEndPoint > | FindEndPointByPrefixString (const PString &prefix, PSafetyMode mode=PSafeReference)
PSafePtr< H323RegisteredEndPoint > | GetFirstEndPoint (PSafetyMode mode=PSafeReference)
Call Operations
virtual H323GatekeeperRequest::Response | OnAdmission (H323GatekeeperARQ &request)
virtual H323GatekeeperRequest::Response | OnDisengage (H323GatekeeperDRQ &request)
virtual H323GatekeeperRequest::Response | OnBandwidth (H323GatekeeperBRQ &request)
virtual H323GatekeeperCall * | CreateCall (const OpalGloballyUniqueID &callIdentifier, H323GatekeeperCall::Direction direction)
virtual void | AddCall (H323GatekeeperCall *)
virtual void | RemoveCall (H323GatekeeperCall *call)
virtual PSafePtr < H323GatekeeperCall > | FindCall (const PString &description, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323GatekeeperCall > | FindCall (const OpalGloballyUniqueID &callIdentifier, PBoolean answeringCall, PSafetyMode mode=PSafeReference)
virtual PSafePtr < H323GatekeeperCall > | FindCall (const OpalGloballyUniqueID &callIdentifier, H323GatekeeperCall::Direction direction, PSafetyMode mode=PSafeReference)
PSafePtr< H323GatekeeperCall > | GetFirstCall (PSafetyMode mode=PSafeReference)
Routing operations
virtual H323GatekeeperRequest::Response | OnLocation (H323GatekeeperLRQ &request)
virtual PBoolean | TranslateAliasAddress (const H225_AliasAddress &alias, H225_ArrayOf_AliasAddress &aliases, H323TransportAddress &address, PBoolean &isGkRouted, H323GatekeeperCall *call)
virtual PBoolean | TranslateAliasAddressToSignalAddress (const H225_AliasAddress &alias, H323TransportAddress &address)
Policy operations
virtual PBoolean | CheckSignalAddressPolicy (const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const H323TransportAddress &address)
virtual PBoolean | CheckAliasAddressPolicy (const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const H225_AliasAddress &alias)
virtual PBoolean | CheckAliasStringPolicy (const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const PString &alias)
virtual unsigned | AllocateBandwidth (unsigned newBandwidth, unsigned oldBandwidth=0)
Security and authentication functions
virtual PBoolean | GetAdmissionRequestAuthentication (H323GatekeeperARQ &info, H235Authenticators &authenticators)
virtual PBoolean | GetUsersPassword (const PString &alias, PString &password, H323RegisteredEndPoint &registeredEndpoint) const
virtual PBoolean | GetUsersPassword (const PString &alias, PString &password) const
H.323 Annex G Peer Element support
H323PeerElement * | GetPeerElement () const
void | SetPeerElement (H323PeerElement *newPeerElement)
void | CreatePeerElement (const H323TransportAddress &h501Interface)
PBoolean | OpenPeerElement (const H323TransportAddress &remotePeer, PBoolean append=false, PBoolean keepTrying=true)
Access functions
const PString & | GetGatekeeperIdentifier () const
void | SetGatekeeperIdentifier (const PString &id, PBoolean adjustListeners=true)
unsigned | GetAvailableBandwidth () const
void | SetAvailableBandwidth (unsigned bps100)
unsigned | GetUsedBandwidth () const
unsigned | GetDefaultBandwidth () const
unsigned | GetTimeToLive () const
void | SetTimeToLive (unsigned seconds)
unsigned | GetInfoResponseRate () const
void | SetInfoResponseRate (unsigned seconds)
PBoolean | IsGatekeeperRouted () const
PBoolean | IsRequiredH235 () const
unsigned | GetActiveRegistrations () const
unsigned | GetPeakRegistrations () const
unsigned | GetTotalRegistrations () const
unsigned | GetRejectedRegistrations () const
unsigned | GetActiveCalls () const
unsigned | GetPeakCalls () const
unsigned | GetTotalCalls () const
unsigned | GetRejectedCalls () const
Public Member Functions inherited from H323TransactionServer
| H323TransactionServer (H323EndPoint &endpoint)
| ~H323TransactionServer ()
H323EndPoint & | GetOwnerEndPoint () const
PBoolean | AddListeners (const H323TransportAddressArray &ifaces)
PBoolean | AddListener (const H323TransportAddress &interfaceName)
PBoolean | AddListener (H323Transport *transport)
PBoolean | AddListener (H323Transactor *listener)
PBoolean | RemoveListener (H323Transactor *listener)
PBoolean | SetUpCallSignalAddresses (H225_ArrayOf_TransportAddress &addresses)

## Protected Member Functions

| PDECLARE_NOTIFIER (PThread, H323GatekeeperServer, MonitorMain)
| PLIST (ListenerList, H323GatekeeperListener)
Protected Member Functions inherited from H323TransactionServer
| PLIST (ListenerList, H323Transactor)

## Protected Attributes

PString | gatekeeperIdentifier
unsigned | totalBandwidth
unsigned | usedBandwidth
unsigned | defaultBandwidth
unsigned | maximumBandwidth
unsigned | defaultTimeToLive
unsigned | defaultInfoResponseRate
PBoolean | overwriteOnSameSignalAddress
PBoolean | canHaveDuplicateAlias
PBoolean | canHaveDuplicatePrefix
PBoolean | canOnlyCallRegisteredEP
PBoolean | canOnlyAnswerRegisteredEP
PBoolean | answerCallPreGrantedARQ
PBoolean | makeCallPreGrantedARQ
PBoolean | isGatekeeperRouted
PBoolean | aliasCanBeHostName
PBoolean | requireH235
PBoolean | disengageOnHearbeatFail
PStringToString | passwords
PMutex | mutex
time_t | identifierBase
unsigned | nextIdentifier
PThread * | monitorThread
PSyncPoint | monitorExit
ListenerList | listeners
H323PeerElement * | peerElement
PSafeDictionary< PString, H323RegisteredEndPoint > | byIdentifier
PSortedStringList | byAddress
PSortedStringList | byAlias
PSortedStringList | byVoicePrefix
PSafeSortedList < H323GatekeeperCall > | activeCalls
PINDEX | peakRegistrations
PINDEX | totalRegistrations
PINDEX | rejectedRegistrations
PINDEX | peakCalls
PINDEX | totalCalls
PINDEX | rejectedCalls
Protected Attributes inherited from H323TransactionServer
H323EndPoint & | ownerEndPoint

## Friends

class | H323GatekeeperRRQ
class | H323GatekeeperARQ

## Detailed Description

This class implements a basic gatekeeper server functionality. An instance of this class contains all of the state information and operations for a gatekeeper. Multiple gatekeeper listeners may be using this class to link individual UDP (or other protocol) packets from various sources (interfaces etc) into a single instance.

There is typically only one instance of this class, though it is not limited to that. An application would also quite likely descend from this class and override call back functions to implement more complex policy.

## Constructor & Destructor Documentation

H323GatekeeperServer::H323GatekeeperServer | ( | H323EndPoint & | endpoint | ) |

Create a new gatekeeper.

H323GatekeeperServer::~H323GatekeeperServer | ( |  | ) |

Destroy gatekeeper.

## Member Function Documentation

virtual void H323GatekeeperServer::AddCall | ( | H323GatekeeperCall * |  | ) |

inline virtual

Called whenever a new call is started

virtual void H323GatekeeperServer::AddEndPoint | ( | H323RegisteredEndPoint * | ep | ) |

virtual

Add a new registered endpoint to the server database. Once the endpoint has been added it is then owned by the server and will be deleted when it is removed.

The user woiuld not usually use this function as it is used internally by the server when new registration requests (RRQ) are received.

Note that a registered endpoint has no relationship in this software to a H323EndPoint class.

virtual unsigned H323GatekeeperServer::AllocateBandwidth | ( | unsigned | newBandwidth,
|  | unsigned | oldBandwidth = `0`
| ) |  |

virtual

Allocate or change the bandwidth being used. This function modifies the total bandwidth used by the all endpoints registered with this gatekeeper. It is called when ARQ or BRQ PDU's are received.

virtual PBoolean H323GatekeeperServer::AllowDuplicateAlias | ( | const H225_ArrayOf_AliasAddress & |  | ) |

inline virtual

References canHaveDuplicateAlias.

virtual PBoolean H323GatekeeperServer::CheckAliasAddressPolicy | ( | const H323RegisteredEndPoint & | ep,
|  | const H225_AdmissionRequest & | arq,
|  | const H225_AliasAddress & | alias
| ) |  |

virtual

Check the alias address against the security policy. This validates that the specified endpoint is allowed to make a connection to or from the specified alias address.

It is expected that a user would override this function to implement application specified security policy algorithms.

The default behaviour checks the canOnlyAnswerRegisteredEP or canOnlyCallRegisteredEP meber variables depending on if it is an incoming call and if that is true only allows the call to proceed if the alias is also registered with the gatekeeper.

virtual PBoolean H323GatekeeperServer::CheckAliasStringPolicy | ( | const H323RegisteredEndPoint & | ep,
|  | const H225_AdmissionRequest & | arq,
|  | const PString & | alias
| ) |  |

virtual

Check the alias address against the security policy. This validates that the specified endpoint is allowed to make a connection to or from the specified simple alias string.

It is expected that a user would override this function to implement application specified security policy algorithms.

The default behaviour checks the canOnlyAnswerRegisteredEP or canOnlyCallRegisteredEP meber variables depending on if it is an incoming call and if that is true only allows the call to proceed if the alias is also registered with the gatekeeper.

virtual PBoolean H323GatekeeperServer::CheckSignalAddressPolicy | ( | const H323RegisteredEndPoint & | ep,
|  | const H225_AdmissionRequest & | arq,
|  | const H323TransportAddress & | address
| ) |  |

virtual

Check the signal address against the security policy. This validates that the specified endpoint is allowed to make a connection to or from the specified signal address.

It is expected that a user would override this function to implement application specified security policy algorithms.

The default behaviour simply returns true.

virtual H323GatekeeperCall* H323GatekeeperServer::CreateCall | ( | const OpalGloballyUniqueID & | callIdentifier,
|  | H323GatekeeperCall::Direction | direction
| ) |  |

virtual

Create a new call object. The user woiuld not usually use this function as it is used internally by the server when new calls (ARQ) are made.

However, a user may override this function to create objects that are user defined descendants of H323GatekeeperCall so the user can maintain extra information on a call by call basis.

virtual PString H323GatekeeperServer::CreateEndPointIdentifier | ( |  | ) |

virtual

Create a new unique identifier for the registered endpoint. The returned identifier must be unique over the lifetime of this gatekeeper server.

The default behaviour simply returns the string representation of the member variable nextIdentifier. There could be a problem in this implementation after 4,294,967,296 have been registered.

virtual H323Transactor* H323GatekeeperServer::CreateListener | ( | H323Transport * | transport | ) |

virtual

Create a new H323GatkeeperListener. The user woiuld not usually use this function as it is used internally by the server when new listeners are added by H323TransportAddress.

However, a user may override this function to create objects that are user defined descendants of H323GatekeeperListener so the user can maintain extra information on a interface by interface basis.

Parameters:

  transport | Transport for listener

Implements H323TransactionServer.

void H323GatekeeperServer::CreatePeerElement | ( | const H323TransportAddress & | h501Interface | ) |

Create an associated peer element for the gatekeeper. The existing peer element is checked to be listening on the same interface as specified and if it is not it is changed to the specified address.

virtual H323RegisteredEndPoint* H323GatekeeperServer::CreateRegisteredEndPoint | ( | H323GatekeeperRRQ & | request | ) |

virtual

Create a new registered endpoint object. The user woiuld not usually use this function as it is used internally by the server when new registration requests (RRQ) are received.

However, a user may override this function to create objects that are user defined descendants of H323RegisteredEndPoint so the user can maintain extra information on a endpoint by endpoint basis.

virtual PSafePtr<H323GatekeeperCall> H323GatekeeperServer::FindCall | ( | const PString & | description,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find the call given the identifier.

virtual PSafePtr<H323GatekeeperCall> H323GatekeeperServer::FindCall | ( | const OpalGloballyUniqueID & | callIdentifier,
|  | PBoolean | answeringCall,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find the call given the identifier.

virtual PSafePtr<H323GatekeeperCall> H323GatekeeperServer::FindCall | ( | const OpalGloballyUniqueID & | callIdentifier,
|  | H323GatekeeperCall::Direction | direction,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find the call given the identifier.

PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindDestinationEndPoint | ( | const OpalGloballyUniqueID & | id,
|  | H323GatekeeperCall::Direction | direction
| ) |  |

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointByAliasAddress | ( | const H225_AliasAddress & | alias,
|  | PSafetyMode | mode = `PSafeReadWrite`
| ) |  |

virtual

Find a registered endpoint given its raw alias address.

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointByAliasString | ( | const PString & | alias,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find a registered endpoint given its simple alias string.

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointByIdentifier | ( | const PString & | identifier,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find a registered endpoint given its endpoint identifier.

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointByPartialAlias | ( | const PString & | alias,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find the first registered endpoint given a partial alias string.

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointByPrefixString | ( | const PString & | prefix,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find the first registered endpoint given a number prefix string.

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointBySignalAddress | ( | const H323TransportAddress & | address,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find a registered endpoint given its signal address.

virtual PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::FindEndPointBySignalAddresses | ( | const H225_ArrayOf_TransportAddress & | addresses,
|  | PSafetyMode | mode = `PSafeReference`
| ) |  |

virtual

Find a registered endpoint given a list of signal addresses.

unsigned H323GatekeeperServer::GetActiveCalls | ( |  | ) | const

inline

Get the currently active call count.

References activeCalls.

unsigned H323GatekeeperServer::GetActiveRegistrations | ( |  | ) | const

inline

Get the currently active registration count.

References byIdentifier.

virtual PBoolean H323GatekeeperServer::GetAdmissionRequestAuthentication | ( | H323GatekeeperARQ & | info,
|  | H235Authenticators & | authenticators
| ) |  |

virtual

Get separate H.235 authentication for the connection. This allows an individual ARQ to override the authentical credentials used in H.235 based RAS for this particular connection.

A return value of false indicates to use the default credentials of the endpoint, while true indicates that new credentials are to be used.

The default behavour does nothing and returns false.

Parameters:

  info | ARQ being constructed
  authenticators | New authenticators for ARQ

unsigned H323GatekeeperServer::GetAvailableBandwidth | ( |  | ) | const

inline

Get the total bandwidth available in 100's of bits per second.

References totalBandwidth.

unsigned H323GatekeeperServer::GetDefaultBandwidth | ( |  | ) | const

inline

Get the default bandwidth for calls.

References defaultBandwidth.

WORD H323GatekeeperServer::GetDefaultUdpPort | ( |  | ) |

inline virtual

Implements H323TransactionServer.

References H225_RAS::DefaultRasUdpPort.

PSafePtr<H323GatekeeperCall> H323GatekeeperServer::GetFirstCall | ( | PSafetyMode | mode = `PSafeReference` | ) |

inline

Get first endpoint for enumeration.

References activeCalls.

PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::GetFirstEndPoint | ( | PSafetyMode | mode = `PSafeReference` | ) |

inline

Get first endpoint for enumeration.

References byIdentifier.

const PString& H323GatekeeperServer::GetGatekeeperIdentifier | ( |  | ) | const

inline

Get the identifier name for this gatekeeper.

References gatekeeperIdentifier.

unsigned H323GatekeeperServer::GetInfoResponseRate | ( |  | ) | const

inline

Get the default time for monitoring calls via IRR.

References defaultInfoResponseRate.

unsigned H323GatekeeperServer::GetPeakCalls | ( |  | ) | const

inline

Get the peak calls count.

References peakCalls.

unsigned H323GatekeeperServer::GetPeakRegistrations | ( |  | ) | const

inline

Get the peak registration count.

References peakRegistrations.

H323PeerElement* H323GatekeeperServer::GetPeerElement | ( |  | ) | const

inline

Get the associated peer element for the gatekeeper.

References peerElement.

unsigned H323GatekeeperServer::GetRejectedCalls | ( |  | ) | const

inline

Get the total calls rejected since start up.

References rejectedCalls.

unsigned H323GatekeeperServer::GetRejectedRegistrations | ( |  | ) | const

inline

Get the total registrations rejected since start up.

References rejectedRegistrations.

unsigned H323GatekeeperServer::GetTimeToLive | ( |  | ) | const

inline

Get the default time to live for new registered endpoints.

References defaultTimeToLive.

unsigned H323GatekeeperServer::GetTotalCalls | ( |  | ) | const

inline

Get the total calls since start up.

References totalCalls.

unsigned H323GatekeeperServer::GetTotalRegistrations | ( |  | ) | const

inline

Get the total registrations since start up.

References totalRegistrations.

unsigned H323GatekeeperServer::GetUsedBandwidth | ( |  | ) | const

inline

Get the total bandwidth used in 100's of bits per second.

References usedBandwidth.

virtual PBoolean H323GatekeeperServer::GetUsersPassword | ( | const PString & | alias,
|  | PString & | password,
|  | H323RegisteredEndPoint & | registeredEndpoint
| ) |  | const

virtual

Get password for user if H.235 security active. Returns true if user is found and password returned. Note the password may be empty in which case the user was found but explicitly ddoes not require security, possibly overriding the requireH235 flag.

virtual PBoolean H323GatekeeperServer::GetUsersPassword | ( | const PString & | alias,
|  | PString & | password
| ) |  | const

virtual

PBoolean H323GatekeeperServer::IsGatekeeperRouted | ( |  | ) | const

inline

Get flag for is gatekeeper routed.

References isGatekeeperRouted.

PBoolean H323GatekeeperServer::IsRequiredH235 | ( |  | ) | const

inline

Get flag for if H.235 authentication is required.

References requireH235.

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnAdmission | ( | H323GatekeeperARQ & | request | ) |

virtual

Handle an admission ARQ PDU. The default behaviour verifies that the call is allowed by the policies the gatekeeper server requires, then attempts to look up the required signal address for the call. It also manages bandwidth allocations.

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnBandwidth | ( | H323GatekeeperBRQ & | request | ) |

virtual

Handle a bandwidth BRQ PDU. The default behaviour finds the call and does some checks then calls the H323GatekeeperCall function of the same name.

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnDiscovery | ( | H323GatekeeperGRQ & | request | ) |

virtual

Handle a discovery GRQ PDU. The default behaviour deals with the authentication scheme nogotiation.

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnDisengage | ( | H323GatekeeperDRQ & | request | ) |

virtual

Handle a disengage DRQ PDU. The default behaviour finds the call by its id provided in the DRQ and removes it from the gatekeeper server database.

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnInfoResponse | ( | H323GatekeeperIRR & | request | ) |

virtual

Handle an info request response IRR PDU. The default behaviour calls the function of the same name in the endpoint instance.

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnLocation | ( | H323GatekeeperLRQ & | request | ) |

virtual

Handle a location LRQ PDU. The default behaviour just uses TranslateAliasAddressToSignalAddress to determine the endpoints location.

It is expected that a user would override this function to implement application specified look up algorithms.

virtual void H323GatekeeperServer::OnReceiveFeatureSet | ( | unsigned | ,
|  | const H225_FeatureSet & | features
| ) |  | const

virtual

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnRegistration | ( | H323GatekeeperRRQ & | request | ) |

virtual

Call back on receiving a RAS registration for this endpoint. The default behaviour checks if the registered endpoint already exists and if not creates a new endpoint. It then calls the OnRegistration() on that new endpoint instance.

If returns true then a RCF is sent otherwise an RRJ is sent.

virtual PBoolean H323GatekeeperServer::OnSendDescriptorForEndpoint | ( | H323RegisteredEndPoint & | ,
|  | H225_ArrayOf_AliasAddress & | ,
|  | H225_EndpointType & | ,
|  | H225_ArrayOf_AliasAddress & |
| ) |  |

inline virtual

virtual PBoolean H323GatekeeperServer::OnSendFeatureSet | ( | unsigned | ,
|  | H225_FeatureSet & | features
| ) |  | const

virtual

virtual H323GatekeeperRequest::Response H323GatekeeperServer::OnUnregistration | ( | H323GatekeeperURQ & | request | ) |

virtual

Handle an unregistration URQ PDU. The default behaviour removes the aliases defined in the URQ and if all aliases for the registered endpoint are removed then the endpoint itself is removed.

PBoolean H323GatekeeperServer::OpenPeerElement | ( | const H323TransportAddress & | remotePeer,
|  | PBoolean | append = `false`,
|  | PBoolean | keepTrying = `true`
| ) |  |

Create a new Peer Element and establish a service relationship. If append is false, the existing peer element is automatically deleted and recreated. If append is true then a new service relationship is added to the existing peer element.

H323GatekeeperServer::PDECLARE_NOTIFIER | ( | PThread | ,
|  | H323GatekeeperServer | ,
|  | MonitorMain |
| ) |  |

protected

H323GatekeeperServer::PLIST | ( | ListenerList | ,
|  | H323GatekeeperListener |
| ) |  |

protected

void H323GatekeeperServer::RemoveAlias | ( | H323RegisteredEndPoint & | ep,
|  | const PString & | alias
| ) |  |

virtual void H323GatekeeperServer::RemoveCall | ( | H323GatekeeperCall * | call | ) |

virtual

Called whenever call is ended. By default, removes the call from the call list

virtual PBoolean H323GatekeeperServer::RemoveEndPoint | ( | H323RegisteredEndPoint * | ep | ) |

virtual

Remove a registered endpoint from the server database.

void H323GatekeeperServer::SetAvailableBandwidth | ( | unsigned | bps100 | ) |

inline

Set the total bandwidth available in 100's of bits per second.

References totalBandwidth.

void H323GatekeeperServer::SetGatekeeperIdentifier | ( | const PString & | id,
|  | PBoolean | adjustListeners = `true`
| ) |  |

Set the identifier name for this gatekeeper. If adjustListeners is true then all gatekeeper listeners that are attached to this gatekeeper server have their identifier names changed as well.

void H323GatekeeperServer::SetInfoResponseRate | ( | unsigned | seconds | ) |

inline

Set the default time for monitoring calls via IRR.

References defaultInfoResponseRate.

void H323GatekeeperServer::SetPeerElement | ( | H323PeerElement * | newPeerElement | ) |

Set the associated peer element for the gatekeeper. The existing peer element is automatically deleted.

void H323GatekeeperServer::SetTimeToLive | ( | unsigned | seconds | ) |

inline

Set the default time to live for new registered endpoints.

References defaultTimeToLive.

virtual PBoolean H323GatekeeperServer::TranslateAliasAddress | ( | const H225_AliasAddress & | alias,
|  | H225_ArrayOf_AliasAddress & | aliases,
|  | H323TransportAddress & | address,
|  | PBoolean & | isGkRouted,
|  | H323GatekeeperCall * | call
| ) |  |

virtual

Translate a given alias to an alias set and signal address. This is called by the OnAdmission() handler to fill in the ACF or OnLocation() to fill the LCF informing the calling endpoint where to actually connect to.

It is expected that a user would override this function to implement application specified look up algorithms.

The default behaviour calls TranslateAliasAddressToSignalAddress() which is provided only for backwards compatibility.

virtual PBoolean H323GatekeeperServer::TranslateAliasAddressToSignalAddress | ( | const H225_AliasAddress & | alias,
|  | H323TransportAddress & | address
| ) |  |

virtual

Translate a given alias to a signal address. This is called by the OnAdmission() handler to fill in the ACF or OnLocation() to fill the LCF informing the calling endpoint where to actually connect to.

It is expected that a user would override this function to implement application specified look up algorithms.

The default behaviour checks the isGatekeeperRouted and if true simply returns the gatekeepers associated endpoints (not registered endpoint, but real H323EndPoint) listening address.

If isGatekeeperRouted is false then it looks up the registered endpoints by alias and uses the saved signal address in the database.

If the alias is not registered then the address parameter is not changed and the function returns true if it is a valid address, false if it was empty.

## Friends And Related Function Documentation

friend class H323GatekeeperARQ

friend

friend class H323GatekeeperRRQ

friend

## Field Documentation

PSafeSortedList<H323GatekeeperCall> H323GatekeeperServer::activeCalls

protected

Referenced by GetActiveCalls(), and GetFirstCall().

PBoolean H323GatekeeperServer::aliasCanBeHostName

protected

PBoolean H323GatekeeperServer::answerCallPreGrantedARQ

protected

PSortedStringList H323GatekeeperServer::byAddress

protected

PSortedStringList H323GatekeeperServer::byAlias

protected

PSafeDictionary<PString, H323RegisteredEndPoint> H323GatekeeperServer::byIdentifier

protected

Referenced by GetActiveRegistrations(), and GetFirstEndPoint().

PSortedStringList H323GatekeeperServer::byVoicePrefix

protected

PBoolean H323GatekeeperServer::canHaveDuplicateAlias

protected

Referenced by AllowDuplicateAlias().

PBoolean H323GatekeeperServer::canHaveDuplicatePrefix

protected

PBoolean H323GatekeeperServer::canOnlyAnswerRegisteredEP

protected

PBoolean H323GatekeeperServer::canOnlyCallRegisteredEP

protected

unsigned H323GatekeeperServer::defaultBandwidth

protected

Referenced by GetDefaultBandwidth().

unsigned H323GatekeeperServer::defaultInfoResponseRate

protected

Referenced by GetInfoResponseRate(), and SetInfoResponseRate().

unsigned H323GatekeeperServer::defaultTimeToLive

protected

Referenced by GetTimeToLive(), and SetTimeToLive().

PBoolean H323GatekeeperServer::disengageOnHearbeatFail

protected

PString H323GatekeeperServer::gatekeeperIdentifier

protected

Referenced by GetGatekeeperIdentifier().

time_t H323GatekeeperServer::identifierBase

protected

PBoolean H323GatekeeperServer::isGatekeeperRouted

protected

Referenced by IsGatekeeperRouted().

ListenerList H323GatekeeperServer::listeners

protected

Reimplemented from H323TransactionServer.

PBoolean H323GatekeeperServer::makeCallPreGrantedARQ

protected

unsigned H323GatekeeperServer::maximumBandwidth

protected

PSyncPoint H323GatekeeperServer::monitorExit

protected

Reimplemented from H323TransactionServer.

PThread* H323GatekeeperServer::monitorThread

protected

Reimplemented from H323TransactionServer.

PMutex H323GatekeeperServer::mutex

protected

Reimplemented from H323TransactionServer.

unsigned H323GatekeeperServer::nextIdentifier

protected

PBoolean H323GatekeeperServer::overwriteOnSameSignalAddress

protected

PStringToString H323GatekeeperServer::passwords

protected

PINDEX H323GatekeeperServer::peakCalls

protected

Referenced by GetPeakCalls().

PINDEX H323GatekeeperServer::peakRegistrations

protected

Referenced by GetPeakRegistrations().

H323PeerElement* H323GatekeeperServer::peerElement

protected

Referenced by GetPeerElement().

PINDEX H323GatekeeperServer::rejectedCalls

protected

Referenced by GetRejectedCalls().

PINDEX H323GatekeeperServer::rejectedRegistrations

protected

Referenced by GetRejectedRegistrations().

PBoolean H323GatekeeperServer::requireH235

protected

Referenced by IsRequiredH235().

unsigned H323GatekeeperServer::totalBandwidth

protected

Referenced by GetAvailableBandwidth(), and SetAvailableBandwidth().

PINDEX H323GatekeeperServer::totalCalls

protected

Referenced by GetTotalCalls().

PINDEX H323GatekeeperServer::totalRegistrations

protected

Referenced by GetTotalRegistrations().

unsigned H323GatekeeperServer::usedBandwidth

protected

Referenced by GetUsedBandwidth().

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

- gkserver.h