OPAL Version 3.10.2
H323PeerElement Class Reference

#include <peclient.h>

Inheritance diagram for H323PeerElement:
H323_AnnexG H323Transactor

Data Structures

class  AliasKey

Public Types

enum  Error {
  Confirmed, Rejected, NoResponse, NoServiceRelationship,
  ServiceRelationshipReestablished
}
enum  { LocalServiceRelationshipOrdinal = 0, NoServiceRelationshipOrdinal = 1, RemoteServiceRelationshipOrdinal = 2 }

Public Member Functions

PSafePtr
< H323PeerElementDescriptor
GetFirstDescriptor (PSafetyMode mode=PSafeReference)
PSafePtr
< H323PeerElementServiceRelationship
GetFirstLocalServiceRelationship (PSafetyMode mode=PSafeReference)
PSafePtr
< H323PeerElementServiceRelationship
GetFirstRemoteServiceRelationship (PSafetyMode mode=PSafeReference)
void SetLocalName (const PString &name)
PString GetLocalName () const
void SetDomainName (const PString &name)
PString GetDomainName () const
PBoolean SetOnlyServiceRelationship (const PString &peer, PBoolean keepTrying=true)
PBoolean AddServiceRelationship (const H323TransportAddress &peer, PBoolean keepTrying=true)
PBoolean AddServiceRelationship (const H323TransportAddress &peer, OpalGloballyUniqueID &serviceID, PBoolean keepTrying=true)
PBoolean RemoveServiceRelationship (const OpalGloballyUniqueID &serviceID, int reason=H501_ServiceReleaseReason::e_terminated)
PBoolean RemoveServiceRelationship (const H323TransportAddress &peer, int reason=H501_ServiceReleaseReason::e_terminated)
PBoolean RemoveAllServiceRelationships ()
Error ServiceRequestByAddr (const H323TransportAddress &peer)
Error ServiceRequestByAddr (const H323TransportAddress &peer, OpalGloballyUniqueID &serviceID)
Error ServiceRequestByID (OpalGloballyUniqueID &serviceID)
PBoolean ServiceRelease (const OpalGloballyUniqueID &serviceID, unsigned reason)
PBoolean AddDescriptor (const OpalGloballyUniqueID &descriptorID, const PStringArray &aliases, const H323TransportAddressArray &transportAddrs, unsigned options=H323PeerElementDescriptor::Protocol_H323, PBoolean now=false)
PBoolean AddDescriptor (const OpalGloballyUniqueID &descriptorID, const H225_ArrayOf_AliasAddress &aliases, const H323TransportAddressArray &transportAddrs, unsigned options=H323PeerElementDescriptor::Protocol_H323, PBoolean now=false)
PBoolean AddDescriptor (const OpalGloballyUniqueID &descriptorID, const H225_ArrayOf_AliasAddress &aliases, const H225_ArrayOf_AliasAddress &transportAddr, unsigned options=H323PeerElementDescriptor::Protocol_H323, PBoolean now=false)
PBoolean AddDescriptor (const OpalGloballyUniqueID &descriptorID, const POrdinalKey &creator, const H225_ArrayOf_AliasAddress &alias, const H225_ArrayOf_AliasAddress &transportAddresses, unsigned options=H323PeerElementDescriptor::Protocol_H323, PBoolean now=false)
PBoolean AddDescriptor (const OpalGloballyUniqueID &descriptorID, const POrdinalKey &creator, const H501_ArrayOf_AddressTemplate &addressTemplates, const PTime &updateTime, PBoolean now=false)
PBoolean DeleteDescriptor (const PString &alias, PBoolean now=false)
PBoolean DeleteDescriptor (const H225_AliasAddress &alias, PBoolean now=false)
PBoolean DeleteDescriptor (const OpalGloballyUniqueID &descriptorID, PBoolean now=false)
PBoolean AccessRequest (const PString &searchAlias, PStringArray &destAliases, H323TransportAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
PBoolean AccessRequest (const PString &searchAlias, H225_ArrayOf_AliasAddress &destAliases, H323TransportAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
PBoolean AccessRequest (const H225_AliasAddress &searchAlias, H225_ArrayOf_AliasAddress &destAliases, H323TransportAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
PBoolean AccessRequest (const H225_AliasAddress &alias, H225_ArrayOf_AliasAddress &destAliases, H225_AliasAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
PBoolean UpdateDescriptor (H323PeerElementDescriptor *descriptor)
PBoolean UpdateDescriptor (H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
Error SendUpdateDescriptorByID (const OpalGloballyUniqueID &serviceID, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
Error SendUpdateDescriptorByAddr (const H323TransportAddress &peer, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
Error SendAccessRequestByID (const OpalGloballyUniqueID &peerID, H501PDU &request, H501PDU &confirmPDU)
Error SendAccessRequestByAddr (const H323TransportAddress &peerAddr, H501PDU &request, H501PDU &confirmPDU)
PBoolean MakeRequest (H323_AnnexG::Request &request)
virtual void OnAddServiceRelationship (const H323TransportAddress &)
virtual void OnRemoveServiceRelationship (const H323TransportAddress &)
virtual void OnNewDescriptor (const H323PeerElementDescriptor &)
virtual void OnUpdateDescriptor (const H323PeerElementDescriptor &)
virtual void OnRemoveDescriptor (const H323PeerElementDescriptor &)
virtual H323Transaction::Response OnServiceRequest (H501ServiceRequest &info)
virtual H323Transaction::Response OnDescriptorUpdate (H501DescriptorUpdate &info)
virtual H323Transaction::Response OnAccessRequest (H501AccessRequest &info)
PBoolean OnReceiveServiceRequest (const H501PDU &pdu, const H501_ServiceRequest &pduBody)
PBoolean OnReceiveServiceConfirmation (const H501PDU &pdu, const H501_ServiceConfirmation &pduBody)
PBoolean OnReceiveDescriptorUpdate (const H501PDU &pdu, const H501_DescriptorUpdate &pduBody)
PBoolean OnReceiveDescriptorUpdateACK (const H501PDU &pdu, const H501_DescriptorUpdateAck &pduBody)
PBoolean OnReceiveAccessRequest (const H501PDU &pdu, const H501_AccessRequest &pduBody)
PBoolean OnReceiveAccessConfirmation (const H501PDU &pdu, const H501_AccessConfirmation &pduBody)
PBoolean OnReceiveAccessRejection (const H501PDU &pdu, const H501_AccessRejection &pduBody)
Construction
 H323PeerElement (H323EndPoint &endpoint, H323Transport *transport=NULL)
 H323PeerElement (H323EndPoint &endpoint, const H323TransportAddress &addr)
 ~H323PeerElement ()
Overrides from PObject
void PrintOn (ostream &strm) const

Protected Member Functions

void Construct ()
Error SendUpdateDescriptor (H501PDU &pdu, const H323TransportAddress &peer, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
PBoolean OnRemoteServiceRelationshipDisappeared (OpalGloballyUniqueID &serviceID, const H323TransportAddress &peer)
void InternalRemoveServiceRelationship (const H323TransportAddress &peer)
H323Transaction::Response HandleServiceRequest (H501ServiceRequest &info)
virtual H323PeerElementDescriptorCreateDescriptor (const OpalGloballyUniqueID &descriptorID)
virtual
H323PeerElementServiceRelationship
CreateServiceRelationship ()
virtual AliasKeyCreateAliasKey (const H225_AliasAddress &alias, const OpalGloballyUniqueID &id, PINDEX pos, PBoolean wild=false)
void RemoveDescriptorInformation (const H501_ArrayOf_AddressTemplate &addressTemplates)
 PDECLARE_NOTIFIER (PThread, H323PeerElement, MonitorMain)
 PDECLARE_NOTIFIER (PThread, H323PeerElement, UpdateAllDescriptors)
 PDECLARE_NOTIFIER (PTimer, H323PeerElement, TickleMonitor)
 PDICTIONARY (StringToOrdinalKey, PString, POrdinalKey)
 PSORTED_LIST (AliasKeyList, H225_AliasAddress)

Protected Attributes

PMutex localNameMutex
PString localIdentifier
PString domainName
PSemaphore requestMutex
PThread * monitor
PBoolean monitorStop
PSyncPoint monitorTickle
PMutex basePeerOrdinalMutex
PINDEX basePeerOrdinal
PSafeSortedList
< H323PeerElementServiceRelationship
localServiceRelationships
PMutex localPeerListMutex
POrdinalSet localServiceOrdinals
PMutex remotePeerListMutex
PSafeSortedList
< H323PeerElementServiceRelationship
remoteServiceRelationships
PStringToString remotePeerAddrToServiceID
StringToOrdinalKey remotePeerAddrToOrdinalKey
PSafeSortedList
< H323PeerElementDescriptor
descriptors
PMutex aliasMutex
AliasKeyList transportAddressToDescriptorID
AliasKeyList specificAliasToDescriptorID
AliasKeyList wildcardAliasToDescriptorID

Detailed Description

This class embodies the an H.323 AnnexG server/client


Member Enumeration Documentation

anonymous enum
Enumerator:
LocalServiceRelationshipOrdinal 
NoServiceRelationshipOrdinal 
RemoteServiceRelationshipOrdinal 
Enumerator:
Confirmed 
Rejected 
NoResponse 
NoServiceRelationship 
ServiceRelationshipReestablished 

Constructor & Destructor Documentation

H323PeerElement::H323PeerElement ( H323EndPoint endpoint,
H323Transport transport = NULL 
)

Create a new client.

Parameters:
endpointEndpoint gatekeeper is associated with.
H323PeerElement::H323PeerElement ( H323EndPoint endpoint,
const H323TransportAddress addr 
)
Parameters:
endpointEndpoint gatekeeper is associated with.
H323PeerElement::~H323PeerElement ( )

Destroy client.


Member Function Documentation

PBoolean H323PeerElement::AccessRequest ( const PString &  searchAlias,
PStringArray &  destAliases,
H323TransportAddress transportAddress,
unsigned  options = H323PeerElementDescriptor::Protocol_H323 
)

Request access to an alias

PBoolean H323PeerElement::AccessRequest ( const PString &  searchAlias,
H225_ArrayOf_AliasAddress &  destAliases,
H323TransportAddress transportAddress,
unsigned  options = H323PeerElementDescriptor::Protocol_H323 
)
PBoolean H323PeerElement::AccessRequest ( const H225_AliasAddress &  searchAlias,
H225_ArrayOf_AliasAddress &  destAliases,
H323TransportAddress transportAddress,
unsigned  options = H323PeerElementDescriptor::Protocol_H323 
)
PBoolean H323PeerElement::AccessRequest ( const H225_AliasAddress &  alias,
H225_ArrayOf_AliasAddress &  destAliases,
H225_AliasAddress &  transportAddress,
unsigned  options = H323PeerElementDescriptor::Protocol_H323 
)
PBoolean H323PeerElement::AddDescriptor ( const OpalGloballyUniqueID &  descriptorID,
const H225_ArrayOf_AliasAddress &  aliases,
const H323TransportAddressArray &  transportAddrs,
unsigned  options = H323PeerElementDescriptor::Protocol_H323,
PBoolean  now = false 
)
PBoolean H323PeerElement::AddDescriptor ( const OpalGloballyUniqueID &  descriptorID,
const H225_ArrayOf_AliasAddress &  aliases,
const H225_ArrayOf_AliasAddress &  transportAddr,
unsigned  options = H323PeerElementDescriptor::Protocol_H323,
PBoolean  now = false 
)
PBoolean H323PeerElement::AddDescriptor ( const OpalGloballyUniqueID &  descriptorID,
const POrdinalKey &  creator,
const H225_ArrayOf_AliasAddress &  alias,
const H225_ArrayOf_AliasAddress &  transportAddresses,
unsigned  options = H323PeerElementDescriptor::Protocol_H323,
PBoolean  now = false 
)
PBoolean H323PeerElement::AddDescriptor ( const OpalGloballyUniqueID &  descriptorID,
const POrdinalKey &  creator,
const H501_ArrayOf_AddressTemplate &  addressTemplates,
const PTime &  updateTime,
PBoolean  now = false 
)
PBoolean H323PeerElement::AddDescriptor ( const OpalGloballyUniqueID &  descriptorID,
const PStringArray &  aliases,
const H323TransportAddressArray &  transportAddrs,
unsigned  options = H323PeerElementDescriptor::Protocol_H323,
PBoolean  now = false 
)
PBoolean H323PeerElement::AddServiceRelationship ( const H323TransportAddress peer,
OpalGloballyUniqueID &  serviceID,
PBoolean  keepTrying = true 
)
PBoolean H323PeerElement::AddServiceRelationship ( const H323TransportAddress peer,
PBoolean  keepTrying = true 
)
void H323PeerElement::Construct ( ) [protected]

Reimplemented from H323_AnnexG.

virtual AliasKey* H323PeerElement::CreateAliasKey ( const H225_AliasAddress &  alias,
const OpalGloballyUniqueID &  id,
PINDEX  pos,
PBoolean  wild = false 
) [protected, virtual]
virtual H323PeerElementDescriptor* H323PeerElement::CreateDescriptor ( const OpalGloballyUniqueID &  descriptorID) [protected, virtual]
virtual H323PeerElementServiceRelationship* H323PeerElement::CreateServiceRelationship ( ) [protected, virtual]
PBoolean H323PeerElement::DeleteDescriptor ( const PString &  alias,
PBoolean  now = false 
)

Remove a descriptor from the local table

PBoolean H323PeerElement::DeleteDescriptor ( const H225_AliasAddress &  alias,
PBoolean  now = false 
)
PBoolean H323PeerElement::DeleteDescriptor ( const OpalGloballyUniqueID &  descriptorID,
PBoolean  now = false 
)
PString H323PeerElement::GetDomainName ( ) const
PSafePtr<H323PeerElementDescriptor> H323PeerElement::GetFirstDescriptor ( PSafetyMode  mode = PSafeReference) [inline]

References descriptors.

PSafePtr<H323PeerElementServiceRelationship> H323PeerElement::GetFirstLocalServiceRelationship ( PSafetyMode  mode = PSafeReference) [inline]
PSafePtr<H323PeerElementServiceRelationship> H323PeerElement::GetFirstRemoteServiceRelationship ( PSafetyMode  mode = PSafeReference) [inline]
PString H323PeerElement::GetLocalName ( ) const
H323Transaction::Response H323PeerElement::HandleServiceRequest ( H501ServiceRequest info) [protected]
void H323PeerElement::InternalRemoveServiceRelationship ( const H323TransportAddress peer) [protected]
PBoolean H323PeerElement::MakeRequest ( H323_AnnexG::Request request) [virtual]

Reimplemented from H323Transactor.

virtual H323Transaction::Response H323PeerElement::OnAccessRequest ( H501AccessRequest info) [virtual]
virtual void H323PeerElement::OnAddServiceRelationship ( const H323TransportAddress ) [inline, virtual]
virtual H323Transaction::Response H323PeerElement::OnDescriptorUpdate ( H501DescriptorUpdate info) [virtual]
virtual void H323PeerElement::OnNewDescriptor ( const H323PeerElementDescriptor ) [inline, virtual]
PBoolean H323PeerElement::OnReceiveAccessConfirmation ( const H501PDU pdu,
const H501_AccessConfirmation &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnReceiveAccessRejection ( const H501PDU pdu,
const H501_AccessRejection &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnReceiveAccessRequest ( const H501PDU pdu,
const H501_AccessRequest &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnReceiveDescriptorUpdate ( const H501PDU pdu,
const H501_DescriptorUpdate &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnReceiveDescriptorUpdateACK ( const H501PDU pdu,
const H501_DescriptorUpdateAck &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnReceiveServiceConfirmation ( const H501PDU pdu,
const H501_ServiceConfirmation &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnReceiveServiceRequest ( const H501PDU pdu,
const H501_ServiceRequest &  pduBody 
) [virtual]

Reimplemented from H323_AnnexG.

PBoolean H323PeerElement::OnRemoteServiceRelationshipDisappeared ( OpalGloballyUniqueID &  serviceID,
const H323TransportAddress peer 
) [protected]
virtual void H323PeerElement::OnRemoveDescriptor ( const H323PeerElementDescriptor ) [inline, virtual]
virtual void H323PeerElement::OnRemoveServiceRelationship ( const H323TransportAddress ) [inline, virtual]
virtual H323Transaction::Response H323PeerElement::OnServiceRequest ( H501ServiceRequest info) [virtual]
virtual void H323PeerElement::OnUpdateDescriptor ( const H323PeerElementDescriptor ) [inline, virtual]
H323PeerElement::PDECLARE_NOTIFIER ( PTimer  ,
H323PeerElement  ,
TickleMonitor   
) [protected]
H323PeerElement::PDECLARE_NOTIFIER ( PThread  ,
H323PeerElement  ,
UpdateAllDescriptors   
) [protected]
H323PeerElement::PDECLARE_NOTIFIER ( PThread  ,
H323PeerElement  ,
MonitorMain   
) [protected]
H323PeerElement::PDICTIONARY ( StringToOrdinalKey  ,
PString  ,
POrdinalKey   
) [protected]
void H323PeerElement::PrintOn ( ostream &  strm) const

Print the name of the peer element.

Parameters:
strmStream to print to.

Reimplemented from H323_AnnexG.

H323PeerElement::PSORTED_LIST ( AliasKeyList  ,
H225_AliasAddress   
) [protected]
PBoolean H323PeerElement::RemoveAllServiceRelationships ( )
void H323PeerElement::RemoveDescriptorInformation ( const H501_ArrayOf_AddressTemplate &  addressTemplates) [protected]
PBoolean H323PeerElement::RemoveServiceRelationship ( const OpalGloballyUniqueID &  serviceID,
int  reason = H501_ServiceReleaseReason::e_terminated 
)
PBoolean H323PeerElement::RemoveServiceRelationship ( const H323TransportAddress peer,
int  reason = H501_ServiceReleaseReason::e_terminated 
)
Error H323PeerElement::SendAccessRequestByAddr ( const H323TransportAddress peerAddr,
H501PDU request,
H501PDU confirmPDU 
)
Error H323PeerElement::SendAccessRequestByID ( const OpalGloballyUniqueID &  peerID,
H501PDU request,
H501PDU confirmPDU 
)
Error H323PeerElement::SendUpdateDescriptor ( H501PDU pdu,
const H323TransportAddress peer,
H323PeerElementDescriptor descriptor,
H501_UpdateInformation_updateType::Choices  updateType 
) [protected]
Error H323PeerElement::SendUpdateDescriptorByAddr ( const H323TransportAddress peer,
H323PeerElementDescriptor descriptor,
H501_UpdateInformation_updateType::Choices  updateType 
)
Error H323PeerElement::SendUpdateDescriptorByID ( const OpalGloballyUniqueID &  serviceID,
H323PeerElementDescriptor descriptor,
H501_UpdateInformation_updateType::Choices  updateType 
)
PBoolean H323PeerElement::ServiceRelease ( const OpalGloballyUniqueID &  serviceID,
unsigned  reason 
)

Send a service release

Error H323PeerElement::ServiceRequestByAddr ( const H323TransportAddress peer,
OpalGloballyUniqueID &  serviceID 
)
Error H323PeerElement::ServiceRequestByAddr ( const H323TransportAddress peer)
Error H323PeerElement::ServiceRequestByID ( OpalGloballyUniqueID &  serviceID)
void H323PeerElement::SetDomainName ( const PString &  name)
void H323PeerElement::SetLocalName ( const PString &  name)
PBoolean H323PeerElement::SetOnlyServiceRelationship ( const PString &  peer,
PBoolean  keepTrying = true 
)

Send a service request

PBoolean H323PeerElement::UpdateDescriptor ( H323PeerElementDescriptor descriptor)
PBoolean H323PeerElement::UpdateDescriptor ( H323PeerElementDescriptor descriptor,
H501_UpdateInformation_updateType::Choices  updateType 
)

Field Documentation

PMutex H323PeerElement::aliasMutex [protected]
PString H323PeerElement::domainName [protected]
PString H323PeerElement::localIdentifier [protected]
PMutex H323PeerElement::localNameMutex [protected]
POrdinalSet H323PeerElement::localServiceOrdinals [protected]
PThread* H323PeerElement::monitor [protected]
PBoolean H323PeerElement::monitorStop [protected]
PSyncPoint H323PeerElement::monitorTickle [protected]
StringToOrdinalKey H323PeerElement::remotePeerAddrToOrdinalKey [protected]
PStringToString H323PeerElement::remotePeerAddrToServiceID [protected]
PSemaphore H323PeerElement::requestMutex [protected]

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