peclient.h
Go to the documentation of this file.
/*
* peclient.h
*
* H.323 Annex G Peer Element client protocol handler
*
* Open H323 Library
*
* Copyright (c) 2003 Equivalence Pty. Ltd.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Open H323 Library.
*
* The Initial Developer of the Original Code is Equivalence Pty. Ltd.
*
* Contributor(s): ______________________________________.
*
* $Revision: 24178 $
* $Author: rjongbloed $
* $Date: 2010-04-05 19:10:56 -0500 (Mon, 05 Apr 2010) $
*/
#ifndef OPAL_H323_PECLIENT_H
#define OPAL_H323_PECLIENT_H
#ifdef P_USE_PRAGMA
#pragma interface
#endif
#include <opal/buildopts.h>
#if OPAL_H501
#include <h323/h323annexg.h>
#include <h323/h323ep.h>
#include <ptlib/safecoll.h>
class H323PeerElement;
class H501Transaction : public H323Transaction
{
PCLASSINFO(H501Transaction, H323Transaction);
public:
H501Transaction(
H323PeerElement & pe,
const H501PDU & pdu,
PBoolean hasReject
);
virtual H323TransactionPDU * CreateRIP(
unsigned sequenceNumber,
unsigned delay
) const;
virtual H235Authenticator::ValidationResult ValidatePDU() const;
H501_MessageCommonInfo & requestCommon;
H501_MessageCommonInfo & confirmCommon;
protected:
H323PeerElement & peerElement;
};
class H501ServiceRequest : public H501Transaction
{
PCLASSINFO(H501ServiceRequest, H501Transaction);
public:
H501ServiceRequest(
H323PeerElement & pe,
const H501PDU & pdu
);
#if PTRACING
virtual const char * GetName() const;
#endif
virtual void SetRejectReason(
unsigned reasonCode
);
H501_ServiceRequest & srq;
H501_ServiceConfirmation & scf;
H501_ServiceRejection & srj;
protected:
virtual Response OnHandlePDU();
};
class H501DescriptorUpdate : public H501Transaction
{
PCLASSINFO(H501DescriptorUpdate, H501Transaction);
public:
H501DescriptorUpdate(
H323PeerElement & pe,
const H501PDU & pdu
);
#if PTRACING
virtual const char * GetName() const;
#endif
virtual void SetRejectReason(
unsigned reasonCode
);
H501_DescriptorUpdate & du;
H501_DescriptorUpdateAck & ack;
protected:
virtual Response OnHandlePDU();
};
class H501AccessRequest : public H501Transaction
{
PCLASSINFO(H501AccessRequest, H501Transaction);
public:
H501AccessRequest(
H323PeerElement & pe,
const H501PDU & pdu
);
#if PTRACING
virtual const char * GetName() const;
#endif
virtual void SetRejectReason(
unsigned reasonCode
);
H501_AccessRequest & arq;
H501_AccessConfirmation & acf;
H501_AccessRejection & arj;
protected:
virtual Response OnHandlePDU();
};
class H323PeerElementDescriptor : public PSafeObject
{
PCLASSINFO(H323PeerElementDescriptor, PSafeObject);
public:
H323PeerElementDescriptor(const OpalGloballyUniqueID & _descriptorID)
: descriptorID(_descriptorID), state(Dirty), creator(0)
{ }
Comparison Compare(const PObject & obj) const;
enum Options {
Protocol_H323 = 0x0001,
Protocol_Voice = 0x0002,
Protocol_Max = 0x0002,
Option_WildCard = 0x0004,
Option_SendAccessRequest = 0x0008,
Option_NotAvailable = 0x0010,
Option_PrioritySet = 0x0020,
Option_PriorityMask = 0x1fc0,
};
enum {
HighestPriority = 0,
DefaultPriority = 80,
LowestPriority = 127
};
static inline unsigned SetPriorityOption(unsigned pri) { return Option_PrioritySet | ((pri & 0x7f) << 6); }
static inline unsigned GetPriorityOption(unsigned options) { return (options & Option_PrioritySet) != 0 ? ((options >> 6) & 0x7f) : (int)DefaultPriority; }
void CopyTo(H501_Descriptor & descriptor);
static PBoolean CopyToAddressTemplate(H501_AddressTemplate & addressTemplates,
const H225_EndpointType & ep,
const H225_ArrayOf_AliasAddress & aliases,
const H225_ArrayOf_AliasAddress & transportAddress,
unsigned options = H323PeerElementDescriptor::Protocol_H323);
static void SetProtocolList(H501_ArrayOf_SupportedProtocols & h501Protocols, unsigned protocols);
static unsigned GetProtocolList(const H501_ArrayOf_SupportedProtocols & h501Protocols);
OpalGloballyUniqueID descriptorID;
PBoolean ContainsNonexistent();
enum States {
Clean,
Dirty,
Deleted
} state;
H501_ArrayOf_AddressTemplate addressTemplates;
PString gatekeeperID;
PTime lastChanged;
POrdinalKey creator;
};
class H323PeerElementServiceRelationship : public PSafeObject
{
PCLASSINFO(H323PeerElementServiceRelationship, PSafeObject);
public:
H323PeerElementServiceRelationship()
: ordinal(0)
{ }
H323PeerElementServiceRelationship(const OpalGloballyUniqueID & _serviceID)
: serviceID(_serviceID), ordinal(0)
{ }
Comparison Compare(const PObject & obj) const
{ return serviceID.Compare(((H323PeerElementServiceRelationship&)obj).serviceID); }
OpalGloballyUniqueID serviceID;
POrdinalKey ordinal;
H323TransportAddress peer;
PString name;
PTime createdTime;
PTime lastUpdateTime;
PTime expireTime;
};
class H323PeerElement : public H323_AnnexG
{
PCLASSINFO(H323PeerElement, H323_AnnexG);
public:
H323PeerElement(
H323EndPoint & endpoint,
H323Transport * transport = NULL
);
H323PeerElement(
H323EndPoint & endpoint,
const H323TransportAddress & addr
);
~H323PeerElement();
enum Error {
Confirmed,
Rejected,
NoResponse,
NoServiceRelationship,
ServiceRelationshipReestablished
};
enum {
LocalServiceRelationshipOrdinal = 0,
NoServiceRelationshipOrdinal = 1,
RemoteServiceRelationshipOrdinal = 2
};
void PrintOn(
ostream & strm
) const;
PSafePtr<H323PeerElementDescriptor> GetFirstDescriptor(
PSafetyMode mode = PSafeReference
) { return PSafePtr<H323PeerElementDescriptor>(descriptors, mode); }
PSafePtr<H323PeerElementServiceRelationship> GetFirstLocalServiceRelationship(
PSafetyMode mode = PSafeReference
) { return PSafePtr<H323PeerElementServiceRelationship>(localServiceRelationships, mode); }
PSafePtr<H323PeerElementServiceRelationship> GetFirstRemoteServiceRelationship(
PSafetyMode mode = PSafeReference
) { return PSafePtr<H323PeerElementServiceRelationship>(remoteServiceRelationships, mode); }
void SetLocalName(const PString & name);
PString GetLocalName() const;
void SetDomainName(const PString & name);
PString GetDomainName() const;
/*********************************************************
functions to establish and break service relationships
*/
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);
/*********************************************************
functions to manipulate the local descriptor table
*/
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
);
/*********************************************************
functions to send send descriptors to another peer element
*/
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);
/*********************************************************
low level request functions
*/
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);
class AliasKey : public H225_AliasAddress
{
public:
AliasKey(const H225_AliasAddress & _alias, const OpalGloballyUniqueID & _id, PINDEX _pos, PBoolean _wild = false)
: H225_AliasAddress(_alias), id(_id), pos(_pos), wild(_wild)
{ }
OpalGloballyUniqueID id;
PINDEX pos;
PBoolean wild;
};
protected:
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 H323PeerElementDescriptor * CreateDescriptor(const OpalGloballyUniqueID & descriptorID);
virtual H323PeerElementServiceRelationship * CreateServiceRelationship();
virtual AliasKey * CreateAliasKey(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);
PMutex localNameMutex;
PString localIdentifier;
PString domainName;
PSemaphore requestMutex;
PThread * monitor;
PBoolean monitorStop;
PSyncPoint monitorTickle;
PMutex basePeerOrdinalMutex;
PINDEX basePeerOrdinal;
// structures needed to maintain local service relationships (for which we receive a ServiceRequest)
PSafeSortedList<H323PeerElementServiceRelationship> localServiceRelationships;
PMutex localPeerListMutex;
POrdinalSet localServiceOrdinals;
// structures needed to maintain remote service relationships (for which we send a ServiceRequest)
PMutex remotePeerListMutex;
PSafeSortedList<H323PeerElementServiceRelationship> remoteServiceRelationships;
PStringToString remotePeerAddrToServiceID;
PDICTIONARY(StringToOrdinalKey, PString, POrdinalKey);
StringToOrdinalKey remotePeerAddrToOrdinalKey;
PSafeSortedList<H323PeerElementDescriptor> descriptors;
PSORTED_LIST(AliasKeyList, H225_AliasAddress);
PMutex aliasMutex;
AliasKeyList transportAddressToDescriptorID;
AliasKeyList specificAliasToDescriptorID;
AliasKeyList wildcardAliasToDescriptorID;
};
#endif // OPAL_H501
#endif // OPAL_H323_PECLIENT_H
H323PeerElement
Definition: peclient.h:248
H501ServiceRequest::srq
H501_ServiceRequest & srq
Definition: peclient.h:96
H323PeerElementDescriptor::Option_PriorityMask
Definition: peclient.h:178
H323PeerElement::localIdentifier
PString localIdentifier
Definition: peclient.h:499
H323PeerElement::SendUpdateDescriptor
Error SendUpdateDescriptor(H501PDU &pdu, const H323TransportAddress &peer, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
H323PeerElementDescriptor::GetPriorityOption
static unsigned GetPriorityOption(unsigned options)
Definition: peclient.h:188
H323PeerElement::OnAddServiceRelationship
virtual void OnAddServiceRelationship(const H323TransportAddress &)
Definition: peclient.h:443
H323PeerElementServiceRelationship::H323PeerElementServiceRelationship
H323PeerElementServiceRelationship()
Definition: peclient.h:223
H323TransportAddressArray
H323TransportAddressArray(const OpalTransportAddress &address)
Definition: transaddr.h:97
H323PeerElementDescriptor::Options
Options
Definition: peclient.h:170
H323PeerElementDescriptor::state
enum H323PeerElementDescriptor::States state
H323PeerElement::MakeRequest
PBoolean MakeRequest(H323_AnnexG::Request &request)
H323PeerElement::OnReceiveServiceConfirmation
PBoolean OnReceiveServiceConfirmation(const H501PDU &pdu, const H501_ServiceConfirmation &pduBody)
H323_AnnexG
Definition: h323annexg.h:52
H323PeerElementServiceRelationship::H323PeerElementServiceRelationship
H323PeerElementServiceRelationship(const OpalGloballyUniqueID &_serviceID)
Definition: peclient.h:227
H501DescriptorUpdate::H501DescriptorUpdate
H501DescriptorUpdate(H323PeerElement &pe, const H501PDU &pdu)
H501AccessRequest::SetRejectReason
virtual void SetRejectReason(unsigned reasonCode)
buildopts.h
H501ServiceRequest::H501ServiceRequest
H501ServiceRequest(H323PeerElement &pe, const H501PDU &pdu)
H323PeerElement::requestMutex
PSemaphore requestMutex
Definition: peclient.h:502
H323PeerElement::OnReceiveAccessRejection
PBoolean OnReceiveAccessRejection(const H501PDU &pdu, const H501_AccessRejection &pduBody)
H323PeerElementServiceRelationship::lastUpdateTime
PTime lastUpdateTime
Definition: peclient.h:239
H323PeerElement::AddDescriptor
PBoolean AddDescriptor(const OpalGloballyUniqueID &descriptorID, const PStringArray &aliases, const H323TransportAddressArray &transportAddrs, unsigned options=H323PeerElementDescriptor::Protocol_H323, PBoolean now=false)
H323PeerElement::Error
Error
Definition: peclient.h:270
H323PeerElement::OnRemoveServiceRelationship
virtual void OnRemoveServiceRelationship(const H323TransportAddress &)
Definition: peclient.h:444
H501Transaction::CreateRIP
virtual H323TransactionPDU * CreateRIP(unsigned sequenceNumber, unsigned delay) const
OpalTransport
Definition: transports.h:703
H323PeerElement::localServiceRelationships
PSafeSortedList< H323PeerElementServiceRelationship > localServiceRelationships
Definition: peclient.h:511
H323PeerElementDescriptor::ContainsNonexistent
PBoolean ContainsNonexistent()
H323PeerElement::remotePeerAddrToOrdinalKey
StringToOrdinalKey remotePeerAddrToOrdinalKey
Definition: peclient.h:520
H323PeerElementDescriptor::Compare
Comparison Compare(const PObject &obj) const
H323PeerElementServiceRelationship::serviceID
OpalGloballyUniqueID serviceID
Definition: peclient.h:234
H323PeerElementDescriptor::HighestPriority
Definition: peclient.h:182
H323PeerElement::aliasMutex
PMutex aliasMutex
Definition: peclient.h:526
H323PeerElement::OnUpdateDescriptor
virtual void OnUpdateDescriptor(const H323PeerElementDescriptor &)
Definition: peclient.h:447
H501Transaction::confirmCommon
H501_MessageCommonInfo & confirmCommon
Definition: peclient.h:71
H323Transaction
Definition: h323trans.h:327
H501ServiceRequest::SetRejectReason
virtual void SetRejectReason(unsigned reasonCode)
H323PeerElement::remotePeerListMutex
PMutex remotePeerListMutex
Definition: peclient.h:516
H323PeerElementDescriptor::DefaultPriority
Definition: peclient.h:183
H323PeerElementDescriptor::Deleted
Definition: peclient.h:207
H323PeerElementServiceRelationship::name
PString name
Definition: peclient.h:237
H501AccessRequest::arq
H501_AccessRequest & arq
Definition: peclient.h:149
H323PeerElement::RemoteServiceRelationshipOrdinal
Definition: peclient.h:281
H323PeerElement::RemoveServiceRelationship
PBoolean RemoveServiceRelationship(const OpalGloballyUniqueID &serviceID, int reason=H501_ServiceReleaseReason::e_terminated)
H323PeerElement::OnReceiveServiceRequest
PBoolean OnReceiveServiceRequest(const H501PDU &pdu, const H501_ServiceRequest &pduBody)
H323PeerElement::PSORTED_LIST
PSORTED_LIST(AliasKeyList, H225_AliasAddress)
H323PeerElementDescriptor::LowestPriority
Definition: peclient.h:184
H323PeerElement::LocalServiceRelationshipOrdinal
Definition: peclient.h:279
H323PeerElement::OnRemoveDescriptor
virtual void OnRemoveDescriptor(const H323PeerElementDescriptor &)
Definition: peclient.h:448
H323PeerElementServiceRelationship::expireTime
PTime expireTime
Definition: peclient.h:240
H501DescriptorUpdate::ack
H501_DescriptorUpdateAck & ack
Definition: peclient.h:124
H323PeerElementDescriptor::Dirty
Definition: peclient.h:206
H323PeerElement::SetLocalName
void SetLocalName(const PString &name)
H323PeerElementDescriptor::SetPriorityOption
static unsigned SetPriorityOption(unsigned pri)
Definition: peclient.h:187
H323PeerElement::specificAliasToDescriptorID
AliasKeyList specificAliasToDescriptorID
Definition: peclient.h:528
H323PeerElementDescriptor::CopyToAddressTemplate
static PBoolean CopyToAddressTemplate(H501_AddressTemplate &addressTemplates, const H225_EndpointType &ep, const H225_ArrayOf_AliasAddress &aliases, const H225_ArrayOf_AliasAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
H323PeerElementDescriptor::gatekeeperID
PString gatekeeperID
Definition: peclient.h:211
H323PeerElement::OnReceiveDescriptorUpdate
PBoolean OnReceiveDescriptorUpdate(const H501PDU &pdu, const H501_DescriptorUpdate &pduBody)
H323PeerElement::AliasKey::AliasKey
AliasKey(const H225_AliasAddress &_alias, const OpalGloballyUniqueID &_id, PINDEX _pos, PBoolean _wild=false)
Definition: peclient.h:467
H323PeerElement::descriptors
PSafeSortedList< H323PeerElementDescriptor > descriptors
Definition: peclient.h:522
H323PeerElementDescriptor::H323PeerElementDescriptor
H323PeerElementDescriptor(const OpalGloballyUniqueID &_descriptorID)
Definition: peclient.h:164
H323PeerElement::PrintOn
void PrintOn(ostream &strm) const
H323PeerElement::AliasKey
Definition: peclient.h:464
H323PeerElement::AliasKey::id
OpalGloballyUniqueID id
Definition: peclient.h:471
H501AccessRequest::acf
H501_AccessConfirmation & acf
Definition: peclient.h:150
H323PeerElement::SetDomainName
void SetDomainName(const PString &name)
H323PeerElement::RemoveAllServiceRelationships
PBoolean RemoveAllServiceRelationships()
H323PeerElement::wildcardAliasToDescriptorID
AliasKeyList wildcardAliasToDescriptorID
Definition: peclient.h:529
H323PeerElement::InternalRemoveServiceRelationship
void InternalRemoveServiceRelationship(const H323TransportAddress &peer)
H323PeerElement::OnReceiveAccessRequest
PBoolean OnReceiveAccessRequest(const H501PDU &pdu, const H501_AccessRequest &pduBody)
H501Transaction::H501Transaction
H501Transaction(H323PeerElement &pe, const H501PDU &pdu, PBoolean hasReject)
H323PeerElementDescriptor::Protocol_Max
Definition: peclient.h:173
H501Transaction::peerElement
H323PeerElement & peerElement
Definition: peclient.h:74
H501ServiceRequest::scf
H501_ServiceConfirmation & scf
Definition: peclient.h:97
H323PeerElement::OnNewDescriptor
virtual void OnNewDescriptor(const H323PeerElementDescriptor &)
Definition: peclient.h:446
H501ServiceRequest
Definition: peclient.h:80
H323PeerElement::localServiceOrdinals
POrdinalSet localServiceOrdinals
Definition: peclient.h:513
H323PeerElementServiceRelationship
Definition: peclient.h:219
H323PeerElement::OnReceiveAccessConfirmation
PBoolean OnReceiveAccessConfirmation(const H501PDU &pdu, const H501_AccessConfirmation &pduBody)
H323PeerElementDescriptor::lastChanged
PTime lastChanged
Definition: peclient.h:212
H323PeerElement::transportAddressToDescriptorID
AliasKeyList transportAddressToDescriptorID
Definition: peclient.h:527
H323PeerElement::NoServiceRelationshipOrdinal
Definition: peclient.h:280
H323PeerElementServiceRelationship::Compare
Comparison Compare(const PObject &obj) const
Definition: peclient.h:231
H323PeerElement::ServiceRelationshipReestablished
Definition: peclient.h:275
H323PeerElement::SendAccessRequestByAddr
Error SendAccessRequestByAddr(const H323TransportAddress &peerAddr, H501PDU &request, H501PDU &confirmPDU)
H323PeerElement::SendAccessRequestByID
Error SendAccessRequestByID(const OpalGloballyUniqueID &peerID, H501PDU &request, H501PDU &confirmPDU)
H323PeerElement::OnAccessRequest
virtual H323Transaction::Response OnAccessRequest(H501AccessRequest &info)
H323PeerElement::Rejected
Definition: peclient.h:272
H501ServiceRequest::OnHandlePDU
virtual Response OnHandlePDU()
H323Transactor::Request
Definition: h323trans.h:223
H501DescriptorUpdate
Definition: peclient.h:107
H323PeerElement::NoResponse
Definition: peclient.h:273
H323PeerElement::OnRemoteServiceRelationshipDisappeared
PBoolean OnRemoteServiceRelationshipDisappeared(OpalGloballyUniqueID &serviceID, const H323TransportAddress &peer)
H323PeerElement::DeleteDescriptor
PBoolean DeleteDescriptor(const PString &alias, PBoolean now=false)
H323PeerElementDescriptor::SetProtocolList
static void SetProtocolList(H501_ArrayOf_SupportedProtocols &h501Protocols, unsigned protocols)
H501AccessRequest::H501AccessRequest
H501AccessRequest(H323PeerElement &pe, const H501PDU &pdu)
H323PeerElement::ServiceRequestByID
Error ServiceRequestByID(OpalGloballyUniqueID &serviceID)
H323PeerElement::SendUpdateDescriptorByID
Error SendUpdateDescriptorByID(const OpalGloballyUniqueID &serviceID, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
H323PeerElementDescriptor::GetProtocolList
static unsigned GetProtocolList(const H501_ArrayOf_SupportedProtocols &h501Protocols)
H323PeerElement::~H323PeerElement
~H323PeerElement()
h323ep.h
H323PeerElement::H323PeerElement
H323PeerElement(H323EndPoint &endpoint, H323Transport *transport=NULL)
H323PeerElement::OnReceiveDescriptorUpdateACK
PBoolean OnReceiveDescriptorUpdateACK(const H501PDU &pdu, const H501_DescriptorUpdateAck &pduBody)
H323PeerElement::SendUpdateDescriptorByAddr
Error SendUpdateDescriptorByAddr(const H323TransportAddress &peer, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
H323TransactionPDU
Definition: h323trans.h:51
H501PDU
Definition: h501pdu.h:54
H323PeerElement::monitor
PThread * monitor
Definition: peclient.h:503
H235Authenticator::ValidationResult
ValidationResult
Definition: h235auth.h:83
H323PeerElement::GetFirstLocalServiceRelationship
PSafePtr< H323PeerElementServiceRelationship > GetFirstLocalServiceRelationship(PSafetyMode mode=PSafeReference)
Definition: peclient.h:297
H323PeerElement::monitorTickle
PSyncPoint monitorTickle
Definition: peclient.h:505
H323PeerElementDescriptor::Protocol_H323
Definition: peclient.h:171
h323annexg.h
H501Transaction
Definition: peclient.h:53
H323PeerElement::GetFirstDescriptor
PSafePtr< H323PeerElementDescriptor > GetFirstDescriptor(PSafetyMode mode=PSafeReference)
Definition: peclient.h:293
H323PeerElementDescriptor::Protocol_Voice
Definition: peclient.h:172
H323PeerElement::CreateServiceRelationship
virtual H323PeerElementServiceRelationship * CreateServiceRelationship()
H501Transaction::ValidatePDU
virtual H235Authenticator::ValidationResult ValidatePDU() const
H323PeerElementServiceRelationship::ordinal
POrdinalKey ordinal
Definition: peclient.h:235
H323PeerElement::Confirmed
Definition: peclient.h:271
H323PeerElement::localPeerListMutex
PMutex localPeerListMutex
Definition: peclient.h:512
H323PeerElement::AccessRequest
PBoolean AccessRequest(const PString &searchAlias, PStringArray &destAliases, H323TransportAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
H323PeerElement::SetOnlyServiceRelationship
PBoolean SetOnlyServiceRelationship(const PString &peer, PBoolean keepTrying=true)
H323PeerElement::localNameMutex
PMutex localNameMutex
Definition: peclient.h:498
H323PeerElement::UpdateDescriptor
PBoolean UpdateDescriptor(H323PeerElementDescriptor *descriptor)
H323PeerElement::ServiceRelease
PBoolean ServiceRelease(const OpalGloballyUniqueID &serviceID, unsigned reason)
H323PeerElement::AliasKey::wild
PBoolean wild
Definition: peclient.h:473
H323PeerElementDescriptor::descriptorID
OpalGloballyUniqueID descriptorID
Definition: peclient.h:200
H323PeerElement::basePeerOrdinal
PINDEX basePeerOrdinal
Definition: peclient.h:508
H323PeerElement::RemoveDescriptorInformation
void RemoveDescriptorInformation(const H501_ArrayOf_AddressTemplate &addressTemplates)
H323PeerElementDescriptor::Option_WildCard
Definition: peclient.h:174
H323PeerElementServiceRelationship::createdTime
PTime createdTime
Definition: peclient.h:238
H323PeerElement::GetDomainName
PString GetDomainName() const
H323PeerElement::basePeerOrdinalMutex
PMutex basePeerOrdinalMutex
Definition: peclient.h:507
H501Transaction::requestCommon
H501_MessageCommonInfo & requestCommon
Definition: peclient.h:70
H323PeerElementDescriptor::Clean
Definition: peclient.h:205
H323PeerElement::CreateDescriptor
virtual H323PeerElementDescriptor * CreateDescriptor(const OpalGloballyUniqueID &descriptorID)
H323PeerElement::OnServiceRequest
virtual H323Transaction::Response OnServiceRequest(H501ServiceRequest &info)
H323PeerElementDescriptor::creator
POrdinalKey creator
Definition: peclient.h:213
H323PeerElement::remotePeerAddrToServiceID
PStringToString remotePeerAddrToServiceID
Definition: peclient.h:518
H323PeerElement::HandleServiceRequest
H323Transaction::Response HandleServiceRequest(H501ServiceRequest &info)
H323PeerElement::GetLocalName
PString GetLocalName() const
H323PeerElement::AliasKey::pos
PINDEX pos
Definition: peclient.h:472
H323PeerElement::remoteServiceRelationships
PSafeSortedList< H323PeerElementServiceRelationship > remoteServiceRelationships
Definition: peclient.h:517
H323PeerElement::monitorStop
PBoolean monitorStop
Definition: peclient.h:504
H323PeerElement::OnDescriptorUpdate
virtual H323Transaction::Response OnDescriptorUpdate(H501DescriptorUpdate &info)
OpalGloballyUniqueID
#define OpalGloballyUniqueID
Definition: guid.h:42
H323Transaction::Response
Response
Definition: h323trans.h:344
H323PeerElementServiceRelationship::peer
H323TransportAddress peer
Definition: peclient.h:236
H323PeerElement::CreateAliasKey
virtual AliasKey * CreateAliasKey(const H225_AliasAddress &alias, const OpalGloballyUniqueID &id, PINDEX pos, PBoolean wild=false)
H323PeerElementDescriptor::CopyTo
void CopyTo(H501_Descriptor &descriptor)
H323PeerElement::ServiceRequestByAddr
Error ServiceRequestByAddr(const H323TransportAddress &peer)
H323EndPoint
Definition: h323ep.h:85
H323PeerElement::PDECLARE_NOTIFIER
PDECLARE_NOTIFIER(PThread, H323PeerElement, MonitorMain)
H501AccessRequest::OnHandlePDU
virtual Response OnHandlePDU()
H323PeerElementDescriptor::Option_SendAccessRequest
Definition: peclient.h:175
H323PeerElementDescriptor
Definition: peclient.h:160
H501AccessRequest
Definition: peclient.h:133
H323Transactor::endpoint
H323EndPoint & endpoint
Definition: h323trans.h:307
H323PeerElementDescriptor::States
States
Definition: peclient.h:204
H323TransportAddress
Definition: transaddr.h:66
H323PeerElementDescriptor::Option_NotAvailable
Definition: peclient.h:176
H323PeerElement::Construct
void Construct()
H323PeerElement::NoServiceRelationship
Definition: peclient.h:274
H323PeerElement::GetFirstRemoteServiceRelationship
PSafePtr< H323PeerElementServiceRelationship > GetFirstRemoteServiceRelationship(PSafetyMode mode=PSafeReference)
Definition: peclient.h:301
H501DescriptorUpdate::SetRejectReason
virtual void SetRejectReason(unsigned reasonCode)
H323Transactor::transport
H323Transport * transport
Definition: h323trans.h:310
H323PeerElementDescriptor::addressTemplates
H501_ArrayOf_AddressTemplate addressTemplates
Definition: peclient.h:210
H323PeerElement::domainName
PString domainName
Definition: peclient.h:500
H501DescriptorUpdate::OnHandlePDU
virtual Response OnHandlePDU()
H501AccessRequest::arj
H501_AccessRejection & arj
Definition: peclient.h:151
H501ServiceRequest::srj
H501_ServiceRejection & srj
Definition: peclient.h:98
H323PeerElement::PDICTIONARY
PDICTIONARY(StringToOrdinalKey, PString, POrdinalKey)
H323PeerElement::AddServiceRelationship
PBoolean AddServiceRelationship(const H323TransportAddress &peer, PBoolean keepTrying=true)
H501DescriptorUpdate::du
H501_DescriptorUpdate & du
Definition: peclient.h:123
H323PeerElementDescriptor::Option_PrioritySet
Definition: peclient.h:177