H323Gatekeeper Class Reference

#include <gkclient.h>

Inheritance diagram for H323Gatekeeper:

H225_RAS H323Transactor

Member variable access

enum  RegistrationFailReasons {
  RegistrationSuccessful, UnregisteredLocally, UnregisteredByGatekeeper, GatekeeperLostRegistration,
  InvalidListener, DuplicateAlias, SecurityDenied, TransportError,
  NumRegistrationFailReasons, RegistrationRejectReasonMask = 0x8000
}
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

Public Member Functions

Construction
 H323Gatekeeper (H323EndPoint &endpoint, H323Transport *transport)
 ~H323Gatekeeper ()
Overrides from H323Transactor
virtual PBoolean WriteTo (H323TransactionPDU &pdu, const H323TransportAddressArray &addresses, PBoolean callback=PTrue)
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=PTrue, PBoolean didGkDiscovery=PFalse)
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=PFalse)
PBoolean DisengageRequest (const H323Connection &connection, unsigned reason)
PBoolean BandwidthRequest (H323Connection &connection, unsigned 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

 HighPriority = 80
 LowPriority = 40
 RequireARQ
 PregrantARQ
 PreGkRoutedARQ
enum  { HighPriority = 80, LowPriority = 40 }
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 H323TransportCreateTransport (PIPSocket::Address bindng=PIPSocket::GetDefaultIpAny(), WORD port=0, PBoolean reuseAddr=PFalse)
void OnAddInterface (const PIPSocket::InterfaceEntry &entry, PINDEX priority)
void OnRemoveInterface (const PIPSocket::InterfaceEntry &entry, PINDEX priority)
void UpdateConnectionStatus ()
bool SetListenerAddresses (H225_ArrayOf_TransportAddress &pdu)

Protected Attributes

PBoolean discoveryComplete
PString endpointIdentifier
RegistrationFailReasons registrationFailReason
InterfaceMonitor highPriorityMonitor
InterfaceMonitor lowPriorityMonitor
PSortedList< AlternateInfoalternates
PBoolean alternatePermanent
PSemaphore requestMutex
H235Authenticators authenticators
enum H323Gatekeeper:: { ... }  pregrantMakeCall
enum H323Gatekeeper:: { ... }  pregrantAnswerCall
H323TransportAddress gkRouteAddress
PBoolean autoReregister
PBoolean reregisterNow
PTimer timeToLive
PBoolean requiresDiscovery
PTimer infoRequestRate
PBoolean willRespondToIRR
PThread * monitor
PBoolean monitorStop
PSyncPoint monitorTickle
PDictionary< POrdinalKey,
H323ServiceControlSession
serviceControlSessions
H460_FeatureSetfeatures

Data Structures

struct  AdmissionResponse
class  AlternateInfo
class  InterfaceMonitor

Detailed Description

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


Member Enumeration Documentation

anonymous enum [protected]

Enumerator:
HighPriority 
LowPriority 

anonymous enum [protected]

Enumerator:
RequireARQ 
PregrantARQ 
PreGkRoutedARQ 

enum H323Gatekeeper::RegistrationFailReasons

Enumerator:
RegistrationSuccessful 
UnregisteredLocally 
UnregisteredByGatekeeper 
GatekeeperLostRegistration 
InvalidListener 
DuplicateAlias 
SecurityDenied 
TransportError 
NumRegistrationFailReasons 
RegistrationRejectReasonMask 


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 = PFalse 
)

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,
unsigned  requestedBandwidth 
)

Bandwidth request to gatekeeper.

Parameters:
connection  Connection we wish to change.
requestedBandwidth  New bandwidth wanted in 0.1kbps

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 = PFalse 
) [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

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.

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_NOTIFIER ( PTimer  ,
H323Gatekeeper  ,
TickleMonitor   
) [protected]

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

PBoolean H323Gatekeeper::RegistrationRequest ( PBoolean  autoReregister = PTrue,
PBoolean  didGkDiscovery = PFalse 
)

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

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

void H323Gatekeeper::UpdateConnectionStatus (  )  [protected]

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

Write PDU to transport after executing callback.

Reimplemented from H323Transactor.


Field Documentation

PBoolean H323Gatekeeper::alternatePermanent [protected]

PSortedList<AlternateInfo> H323Gatekeeper::alternates [protected]

H235Authenticators H323Gatekeeper::authenticators [protected]

PBoolean H323Gatekeeper::autoReregister [protected]

PBoolean H323Gatekeeper::discoveryComplete [protected]

PString H323Gatekeeper::endpointIdentifier [protected]

H460_FeatureSet* H323Gatekeeper::features [protected]

H323TransportAddress H323Gatekeeper::gkRouteAddress [protected]

InterfaceMonitor H323Gatekeeper::highPriorityMonitor [protected]

PTimer H323Gatekeeper::infoRequestRate [protected]

InterfaceMonitor H323Gatekeeper::lowPriorityMonitor [protected]

PThread* H323Gatekeeper::monitor [protected]

PBoolean H323Gatekeeper::monitorStop [protected]

PSyncPoint H323Gatekeeper::monitorTickle [protected]

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

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

RegistrationFailReasons H323Gatekeeper::registrationFailReason [protected]

PSemaphore H323Gatekeeper::requestMutex [protected]

PBoolean H323Gatekeeper::requiresDiscovery [protected]

PBoolean H323Gatekeeper::reregisterNow [protected]

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

PTimer H323Gatekeeper::timeToLive [protected]

PBoolean H323Gatekeeper::willRespondToIRR [protected]


The documentation for this class was generated from the following file:
Generated on Mon Feb 21 20:19:22 2011 for OPAL by  doxygen 1.4.7