# H323Gatekeeper Class Reference

`#include <gkclient.h>`

Inheritance diagram for H323Gatekeeper:

[legend]
Collaboration diagram for H323Gatekeeper:
[legend]

## Member variable access

enum | RegistrationFailReasons { RegistrationSuccessful, UnregisteredLocally, UnregisteredByGatekeeper, GatekeeperLostRegistration, InvalidListener, DuplicateAlias, SecurityDenied, TransportError, NumRegistrationFailReasons, GatekeeperRejectReasonMask = 0x4000, RegistrationRejectReasonMask = 0x8000, UnregistrationRejectReasonMask = 0x10000 }
PBoolean | IsDiscoveryComplete () const
PBoolean | IsRegistered () const
RegistrationFailReasons | GetRegistrationFailReason () const
PString | GetName () const
const PString & | GetEndpointIdentifier () const
void | SetPassword (const PString &password, const PString &username=PString())
H323TransportAddress | GetGatekeeperRouteAddress () const
static PString | GetRegistrationFailReasonString (RegistrationFailReasons reason)
ostream & | operator<< (ostream &strm, RegistrationFailReasons reason)

## Public Member Functions

H460_FeatureSet & | GetFeatures ()
Construction
| H323Gatekeeper (H323EndPoint &endpoint, H323Transport *transport)
| ~H323Gatekeeper ()
Overrides from H323Transactor
virtual PBoolean | WriteTo (H323TransactionPDU &pdu, const H323TransportAddressArray &addresses, PBoolean callback=true)
Overrides from H225_RAS
PBoolean | OnReceiveGatekeeperConfirm (const H225_GatekeeperConfirm &gcf)
PBoolean | OnReceiveGatekeeperReject (const H225_GatekeeperReject &grj)
PBoolean | OnReceiveRegistrationConfirm (const H225_RegistrationConfirm &rcf)
PBoolean | OnReceiveRegistrationReject (const H225_RegistrationReject &rrj)
PBoolean | OnReceiveUnregistrationRequest (const H225_UnregistrationRequest &urq)
PBoolean | OnReceiveUnregistrationConfirm (const H225_UnregistrationConfirm &ucf)
PBoolean | OnReceiveUnregistrationReject (const H225_UnregistrationReject &urj)
PBoolean | OnReceiveAdmissionConfirm (const H225_AdmissionConfirm &acf)
PBoolean | OnReceiveAdmissionReject (const H225_AdmissionReject &arj)
PBoolean | OnReceiveDisengageRequest (const H225_DisengageRequest &drq)
PBoolean | OnReceiveBandwidthConfirm (const H225_BandwidthConfirm &bcf)
PBoolean | OnReceiveBandwidthRequest (const H225_BandwidthRequest &brq)
PBoolean | OnReceiveInfoRequest (const H225_InfoRequest &irq)
PBoolean | OnReceiveServiceControlIndication (const H225_ServiceControlIndication &)
void | OnSendGatekeeperRequest (H225_GatekeeperRequest &grq)
void | OnSendAdmissionRequest (H225_AdmissionRequest &arq)
PBoolean | OnSendFeatureSet (unsigned, H225_FeatureSet &features) const
void | OnReceiveFeatureSet (unsigned, const H225_FeatureSet &features) const
Protocol operations
PBoolean | DiscoverAny ()
PBoolean | DiscoverByName (const PString &identifier)
PBoolean | DiscoverByAddress (const H323TransportAddress &address)
PBoolean | DiscoverByNameAndAddress (const PString &identifier, const H323TransportAddress &address)
PBoolean | RegistrationRequest (PBoolean autoReregister=true, PBoolean didGkDiscovery=false)
PBoolean | UnregistrationRequest (int reason)
PBoolean | LocationRequest (const PString &alias, H323TransportAddress &address)
PBoolean | LocationRequest (const PStringList &aliases, H323TransportAddress &address)
PBoolean | AdmissionRequest (H323Connection &connection, AdmissionResponse &response, PBoolean ignorePreGrantedARQ=false)
PBoolean | DisengageRequest (const H323Connection &connection, unsigned reason)
PBoolean | BandwidthRequest (H323Connection &connection, OpalBandwidth requestedBandwidth)
void | InfoRequestResponse ()
void | InfoRequestResponse (const H323Connection &connection)
void | InfoRequestResponse (const H323Connection &connection, const H225_H323_UU_PDU &pdu, PBoolean sent)
virtual void | OnServiceControlSessions (const H225_ArrayOf_ServiceControlSession &serviceControl, H323Connection *connection)
virtual void | OnTerminalAliasChanged ()

## Protected Types

| RequireARQ
| PregrantARQ
| PreGkRoutedARQ
enum | { RequireARQ, PregrantARQ, PreGkRoutedARQ }

## Protected Member Functions

bool | StartGatekeeper (const H323TransportAddress &address)
virtual bool | DiscoverGatekeeper ()
unsigned | SetupGatekeeperRequest (H323RasPDU &request)
void | Connect (const H323TransportAddress &address, const PString &gatekeeperIdentifier)
| PDECLARE_NOTIFIER (PThread, H323Gatekeeper, MonitorMain)
| PDECLARE_NOTIFIER (PTimer, H323Gatekeeper, TickleMonitor)
void | RegistrationTimeToLive ()
void | SetInfoRequestRate (const PTimeInterval &rate)
void | ClearInfoRequestRate ()
H225_InfoRequestResponse & | BuildInfoRequestResponse (H323RasPDU &response, unsigned seqNum)
PBoolean | SendUnsolicitedIRR (H225_InfoRequestResponse &irr, H323RasPDU &response)
void | SetAlternates (const H225_ArrayOf_AlternateGK &alts, PBoolean permanent)
virtual PBoolean | MakeRequest (Request &request)
PBoolean | MakeRequestWithReregister (Request &request, unsigned unregisteredTag)
virtual H323Transport * | CreateTransport (PIPSocket::Address bindng=PIPSocket::GetDefaultIpAny(), WORD port=0, PBoolean reuseAddr=false)
void | OnAddInterface (const PIPSocket::InterfaceEntry &entry, PINDEX priority)
void | OnRemoveInterface (const PIPSocket::InterfaceEntry &entry, PINDEX priority)
bool | SetListenerAddresses (H225_ArrayOf_TransportAddress &pdu)
void | SetRegistrationFailReason (unsigned reason, unsigned commandMask)
void | SetRegistrationFailReason (RegistrationFailReasons reason)
| PDECLARE_InterfaceNotifier (H323Gatekeeper, OnHighPriorityInterfaceChange)
| PDECLARE_InterfaceNotifier (H323Gatekeeper, OnLowPriorityInterfaceChange)

## Protected Attributes

bool | discoveryComplete
PString | endpointIdentifier
RegistrationFailReasons | m_registrationFailReason
PSortedList< AlternateInfo > | alternates
bool | alternatePermanent
PSemaphore | requestMutex
H235Authenticators | authenticators
enum H323Gatekeeper:: { ... } | pregrantMakeCall
enum H323Gatekeeper:: { ... } | pregrantAnswerCall
H323TransportAddress | gkRouteAddress
bool | autoReregister
bool | reregisterNow
PTimer | timeToLive
bool | requiresDiscovery
PTimer | infoRequestRate
bool | willRespondToIRR
PThread * | monitor
bool | monitorStop
PSyncPoint | monitorTickle
PDictionary< POrdinalKey, H323ServiceControlSession > | serviceControlSessions
H460_FeatureSet * | features

## Data Structures

struct | AdmissionResponse
class | AlternateInfo

## Detailed Description

This class embodies the H.225.0 RAS protocol to gatekeepers.

## Member Enumeration Documentation

anonymous enum`[protected]`

Enumerator:

  RequireARQ |
  PregrantARQ |
  PreGkRoutedARQ |

enum H323Gatekeeper::RegistrationFailReasons

Enumerator:

  RegistrationSuccessful |
  UnregisteredLocally |
  UnregisteredByGatekeeper |
  GatekeeperLostRegistration |
  InvalidListener |
  DuplicateAlias |
  SecurityDenied |
  TransportError |
  NumRegistrationFailReasons |
  GatekeeperRejectReasonMask |
  RegistrationRejectReasonMask |
  UnregistrationRejectReasonMask |

## Constructor & Destructor Documentation

H323Gatekeeper::H323Gatekeeper | ( | H323EndPoint & | endpoint,
|  | H323Transport * | transport |
| ) |  |  |

Create a new gatekeeper.

Parameters:

  endpoint | Endpoint gatekeeper is associated with.
  transport | Transport over which gatekeepers communicates.

H323Gatekeeper::~H323Gatekeeper | ( |  | ) |

Destroy gatekeeper.

## Member Function Documentation

PBoolean H323Gatekeeper::AdmissionRequest | ( | H323Connection & | connection,
|  | AdmissionResponse & | response,
|  | PBoolean | ignorePreGrantedARQ = `false` |
| ) |  |  |

Admission request to gatekeeper.

Parameters:

  connection | Connection we wish to change.
  response | Response parameters to ARQ
  ignorePreGrantedARQ | Flag to force ARQ to be sent

PBoolean H323Gatekeeper::BandwidthRequest | ( | H323Connection & | connection,
|  | OpalBandwidth | requestedBandwidth |
| ) |  |  |

Bandwidth request to gatekeeper.

Parameters:

  connection | Connection we wish to change.
  requestedBandwidth | New bandwidth wanted in bps

H225_InfoRequestResponse& H323Gatekeeper::BuildInfoRequestResponse | ( | H323RasPDU & | response,
|  | unsigned | seqNum |
| ) |  |  | `[protected]`

void H323Gatekeeper::ClearInfoRequestRate | ( |  | ) | `[protected]`

void H323Gatekeeper::Connect | ( | const H323TransportAddress & | address,
|  | const PString & | gatekeeperIdentifier |
| ) |  |  | `[protected]`

virtual H323Transport* H323Gatekeeper::CreateTransport | ( | PIPSocket::Address | bindng = `PIPSocket::GetDefaultIpAny()`,
|  | WORD | port = `0`,
|  | PBoolean | reuseAddr = `false` |
| ) |  |  | `[protected, virtual]`

PBoolean H323Gatekeeper::DiscoverAny | ( |  | ) |

Discover a gatekeeper on the local network.

PBoolean H323Gatekeeper::DiscoverByAddress | ( | const H323TransportAddress & | address | ) |

Discover a gatekeeper on the local network. If the address string is empty then the first gatekeeper to respond to a broadcast is used.

Parameters:

  address | Address of gatekeeper.

PBoolean H323Gatekeeper::DiscoverByName | ( | const PString & | identifier | ) |

Discover a gatekeeper on the local network. If the identifier string is empty then the first gatekeeper to respond to a broadcast is used.

Parameters:

  identifier | Gatekeeper identifier to find

PBoolean H323Gatekeeper::DiscoverByNameAndAddress | ( | const PString & | identifier,
|  | const H323TransportAddress & | address |
| ) |  |  |

Discover a gatekeeper on the local network. Combination of DiscoverByName() and DiscoverByAddress().

virtual bool H323Gatekeeper::DiscoverGatekeeper | ( |  | ) | `[protected, virtual]`

PBoolean H323Gatekeeper::DisengageRequest | ( | const H323Connection & | connection,
|  | unsigned | reason |
| ) |  |  |

Disengage request to gatekeeper.

Parameters:

  connection | Connection we wish admitted.
  reason | Reason code for disengage

const PString& H323Gatekeeper::GetEndpointIdentifier | ( |  | ) | const`[inline]`

Get the endpoint identifier

H460_FeatureSet& H323Gatekeeper::GetFeatures | ( |  | ) |

H323TransportAddress H323Gatekeeper::GetGatekeeperRouteAddress | ( |  | ) | const`[inline]`

PString H323Gatekeeper::GetName | ( |  | ) | const

Get the gatekeeper name. The gets the name of the gatekeeper. It will be of the form id where id is the gatekeeperIdentifier and address is the transport address used. If the gatekeeperIdentifier is empty the '@' is not included and only the transport is shown. The transport is minimised also, with the type removed if IP is used and the :port removed if the default port is used.

RegistrationFailReasons H323Gatekeeper::GetRegistrationFailReason | ( |  | ) | const`[inline]`

Get the registration fail reason.

static PString H323Gatekeeper::GetRegistrationFailReasonString | ( | RegistrationFailReasons | reason | ) | `[static]`

void H323Gatekeeper::InfoRequestResponse | ( | const H323Connection & | connection,
|  | const H225_H323_UU_PDU & | pdu,
|  | PBoolean | sent |
| ) |  |  |

Send an unsolicited info response to the gatekeeper.

Parameters:

  connection | Connection to send info about
  pdu | PDU that was sent or received
  sent | Flag for PDU was sent or received

void H323Gatekeeper::InfoRequestResponse | ( | const H323Connection & | connection | ) |

Send an unsolicited info response to the gatekeeper.

Parameters:

  connection | Connection to send info about

void H323Gatekeeper::InfoRequestResponse | ( |  | ) |

Send an unsolicited info response to the gatekeeper.

PBoolean H323Gatekeeper::IsDiscoveryComplete | ( |  | ) | const`[inline]`

Determine if the endpoint has discovered the gatekeeper.

PBoolean H323Gatekeeper::IsRegistered | ( |  | ) | const`[inline]`

Determine if the endpoint is registered with the gatekeeper.

PBoolean H323Gatekeeper::LocationRequest | ( | const PStringList & | aliases,
|  | H323TransportAddress & | address |
| ) |  |  |

Location request to gatekeeper.

Parameters:

  aliases | Alias names we wish to find.
  address | Resultant transport address.

PBoolean H323Gatekeeper::LocationRequest | ( | const PString & | alias,
|  | H323TransportAddress & | address |
| ) |  |  |

Location request to gatekeeper.

Parameters:

  alias | Alias name we wish to find.
  address | Resultant transport address.

virtual PBoolean H323Gatekeeper::MakeRequest | ( | Request & | request | ) | `[protected, virtual]`

PBoolean H323Gatekeeper::MakeRequestWithReregister | ( | Request & | request,
|  | unsigned | unregisteredTag |
| ) |  |  | `[protected]`

void H323Gatekeeper::OnAddInterface | ( | const PIPSocket::InterfaceEntry & | entry,
|  | PINDEX | priority |
| ) |  |  | `[protected]`

PBoolean H323Gatekeeper::OnReceiveAdmissionConfirm | ( | const H225_AdmissionConfirm & | acf | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveAdmissionReject | ( | const H225_AdmissionReject & | arj | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveBandwidthConfirm | ( | const H225_BandwidthConfirm & | bcf | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveBandwidthRequest | ( | const H225_BandwidthRequest & | brq | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveDisengageRequest | ( | const H225_DisengageRequest & | drq | ) | `[virtual]`

Reimplemented from H225_RAS.

void H323Gatekeeper::OnReceiveFeatureSet | ( | unsigned | ,
|  | const H225_FeatureSet & | features |
| ) |  |  | const`[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveGatekeeperConfirm | ( | const H225_GatekeeperConfirm & | gcf | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveGatekeeperReject | ( | const H225_GatekeeperReject & | grj | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveInfoRequest | ( | const H225_InfoRequest & | irq | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveRegistrationConfirm | ( | const H225_RegistrationConfirm & | rcf | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveRegistrationReject | ( | const H225_RegistrationReject & | rrj | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveServiceControlIndication | ( | const H225_ServiceControlIndication & |  | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveUnregistrationConfirm | ( | const H225_UnregistrationConfirm & | ucf | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveUnregistrationReject | ( | const H225_UnregistrationReject & | urj | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnReceiveUnregistrationRequest | ( | const H225_UnregistrationRequest & | urq | ) | `[virtual]`

Reimplemented from H225_RAS.

void H323Gatekeeper::OnRemoveInterface | ( | const PIPSocket::InterfaceEntry & | entry,
|  | PINDEX | priority |
| ) |  |  | `[protected]`

void H323Gatekeeper::OnSendAdmissionRequest | ( | H225_AdmissionRequest & | arq | ) | `[virtual]`

Reimplemented from H225_RAS.

PBoolean H323Gatekeeper::OnSendFeatureSet | ( | unsigned | ,
|  | H225_FeatureSet & | features |
| ) |  |  | const`[virtual]`

Reimplemented from H225_RAS.

void H323Gatekeeper::OnSendGatekeeperRequest | ( | H225_GatekeeperRequest & | grq | ) | `[virtual]`

Reimplemented from H225_RAS.

virtual void H323Gatekeeper::OnServiceControlSessions | ( | const H225_ArrayOf_ServiceControlSession & | serviceControl,
|  | H323Connection * | connection |
| ) |  |  | `[virtual]`

Handle incoming service control session information.

virtual void H323Gatekeeper::OnTerminalAliasChanged | ( |  | ) | `[virtual]`

Handle terminal alias changes

H323Gatekeeper::PDECLARE_InterfaceNotifier | ( | H323Gatekeeper | ,
|  | OnLowPriorityInterfaceChange |  |
| ) |  |  | `[protected]`

H323Gatekeeper::PDECLARE_InterfaceNotifier | ( | H323Gatekeeper | ,
|  | OnHighPriorityInterfaceChange |  |
| ) |  |  | `[protected]`

H323Gatekeeper::PDECLARE_NOTIFIER | ( | PTimer | ,
|  | H323Gatekeeper | ,
|  | TickleMonitor |  |
| ) |  |  | `[protected]`

H323Gatekeeper::PDECLARE_NOTIFIER | ( | PThread | ,
|  | H323Gatekeeper | ,
|  | MonitorMain |  |
| ) |  |  | `[protected]`

PBoolean H323Gatekeeper::RegistrationRequest | ( | PBoolean | autoReregister = `true`,
|  | PBoolean | didGkDiscovery = `false` |
| ) |  |  |

Register with gatekeeper.

Parameters:

  autoReregister | Automatic register on unregister
  didGkDiscovery | discovery procedure was done right before

void H323Gatekeeper::RegistrationTimeToLive | ( |  | ) | `[protected]`

PBoolean H323Gatekeeper::SendUnsolicitedIRR | ( | H225_InfoRequestResponse & | irr,
|  | H323RasPDU & | response |
| ) |  |  | `[protected]`

void H323Gatekeeper::SetAlternates | ( | const H225_ArrayOf_AlternateGK & | alts,
|  | PBoolean | permanent |
| ) |  |  | `[protected]`

void H323Gatekeeper::SetInfoRequestRate | ( | const PTimeInterval & | rate | ) | `[protected]`

bool H323Gatekeeper::SetListenerAddresses | ( | H225_ArrayOf_TransportAddress & | pdu | ) | `[protected]`

void H323Gatekeeper::SetPassword | ( | const PString & | password,
|  | const PString & | username = `PString()` |
| ) |  |  |

Set the H.235 password in the gatekeeper. If no username is present then it will default to the endpoint local user name (ie first alias).

Parameters:

  password | New password
  username | Username for password

void H323Gatekeeper::SetRegistrationFailReason | ( | RegistrationFailReasons | reason | ) | `[protected]`

void H323Gatekeeper::SetRegistrationFailReason | ( | unsigned | reason,
|  | unsigned | commandMask |
| ) |  |  | `[protected]`

unsigned H323Gatekeeper::SetupGatekeeperRequest | ( | H323RasPDU & | request | ) | `[protected]`

bool H323Gatekeeper::StartGatekeeper | ( | const H323TransportAddress & | address | ) | `[protected]`

PBoolean H323Gatekeeper::UnregistrationRequest | ( | int | reason | ) |

Unregister with gatekeeper.

Parameters:

  reason | Reason for unregistration

virtual PBoolean H323Gatekeeper::WriteTo | ( | H323TransactionPDU & | pdu,
|  | const H323TransportAddressArray & | addresses,
|  | PBoolean | callback = `true` |
| ) |  |  | `[virtual]`

Write PDU to transport after executing callback.

Reimplemented from H323Transactor.

## Friends And Related Function Documentation

ostream& operator<< | ( | ostream & | strm,
|  | RegistrationFailReasons | reason |
| ) |  |  | `[friend]`

## Field Documentation

bool H323Gatekeeper::alternatePermanent `[protected]`

PSortedList<AlternateInfo> H323Gatekeeper::alternates `[protected]`

H235Authenticators H323Gatekeeper::authenticators `[protected]`

bool H323Gatekeeper::autoReregister `[protected]`

bool H323Gatekeeper::discoveryComplete `[protected]`

PString H323Gatekeeper::endpointIdentifier `[protected]`

H460_FeatureSet* H323Gatekeeper::features `[protected]`

H323TransportAddress H323Gatekeeper::gkRouteAddress `[protected]`

PTimer H323Gatekeeper::infoRequestRate `[protected]`

RegistrationFailReasons H323Gatekeeper::m_registrationFailReason `[protected]`

PThread* H323Gatekeeper::monitor `[protected]`

bool H323Gatekeeper::monitorStop `[protected]`

PSyncPoint H323Gatekeeper::monitorTickle `[protected]`

enum { ... } H323Gatekeeper::pregrantAnswerCall `[protected]`

enum { ... } H323Gatekeeper::pregrantMakeCall `[protected]`

PSemaphore H323Gatekeeper::requestMutex `[protected]`

bool H323Gatekeeper::requiresDiscovery `[protected]`

bool H323Gatekeeper::reregisterNow `[protected]`

PDictionary<POrdinalKey, H323ServiceControlSession> H323Gatekeeper::serviceControlSessions `[protected]`

PTimer H323Gatekeeper::timeToLive `[protected]`

bool H323Gatekeeper::willRespondToIRR `[protected]`

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

- gkclient.h