OPAL  Version 3.18.8
peclient.h
Go to the documentation of this file.
1 /*
2  * peclient.h
3  *
4  * H.323 Annex G Peer Element client protocol handler
5  *
6  * Open H323 Library
7  *
8  * Copyright (c) 2003 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open H323 Library.
21  *
22  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23  *
24  * Contributor(s): ______________________________________.
25  */
26 
27 #ifndef OPAL_H323_PECLIENT_H
28 #define OPAL_H323_PECLIENT_H
29 
30 #ifdef P_USE_PRAGMA
31 #pragma interface
32 #endif
33 
34 #include <opal_config.h>
35 
36 #if OPAL_H501
37 
38 #include <h323/h323annexg.h>
39 #include <h323/h323ep.h>
40 
41 #include <ptlib/safecoll.h>
42 
43 
44 class H323PeerElement;
45 
46 
48 
50 {
51  PCLASSINFO(H501Transaction, H323Transaction);
52  public:
54  H323PeerElement & pe,
55  const H501PDU & pdu,
56  PBoolean hasReject
57  );
58 
59  virtual H323TransactionPDU * CreateRIP(
60  unsigned sequenceNumber,
61  unsigned delay
62  ) const;
63 
65 
66  H501_MessageCommonInfo & requestCommon;
67  H501_MessageCommonInfo & confirmCommon;
68 
69  protected:
71 };
72 
73 
75 
77 {
79  public:
81  H323PeerElement & pe,
82  const H501PDU & pdu
83  );
84 
85 #if PTRACING
86  virtual const char * GetName() const;
87 #endif
88  virtual void SetRejectReason(
89  unsigned reasonCode
90  );
91 
92  H501_ServiceRequest & srq;
93  H501_ServiceConfirmation & scf;
94  H501_ServiceRejection & srj;
95 
96  protected:
97  virtual Response OnHandlePDU();
98 };
99 
100 
102 
104 {
106  public:
108  H323PeerElement & pe,
109  const H501PDU & pdu
110  );
111 
112 #if PTRACING
113  virtual const char * GetName() const;
114 #endif
115  virtual void SetRejectReason(
116  unsigned reasonCode
117  );
118 
119  H501_DescriptorUpdate & du;
120  H501_DescriptorUpdateAck & ack;
121 
122  protected:
123  virtual Response OnHandlePDU();
124 };
125 
126 
128 
130 {
131  PCLASSINFO(H501AccessRequest, H501Transaction);
132  public:
134  H323PeerElement & pe,
135  const H501PDU & pdu
136  );
137 
138 #if PTRACING
139  virtual const char * GetName() const;
140 #endif
141  virtual void SetRejectReason(
142  unsigned reasonCode
143  );
144 
145  H501_AccessRequest & arq;
146  H501_AccessConfirmation & acf;
147  H501_AccessRejection & arj;
148 
149  protected:
150  virtual Response OnHandlePDU();
151 };
152 
153 
155 
156 class H323PeerElementDescriptor : public PSafeObject
157 {
158  PCLASSINFO(H323PeerElementDescriptor, PSafeObject);
159  public:
161  : descriptorID(_descriptorID), state(Dirty), creator(0)
162  { }
163 
164  Comparison Compare(const PObject & obj) const;
165 
166  enum Options {
167  Protocol_H323 = 0x0001,
168  Protocol_Voice = 0x0002,
169  Protocol_Max = 0x0002,
170  Option_WildCard = 0x0004,
175  };
176 
177  enum {
181  };
182 
183  static inline unsigned SetPriorityOption(unsigned pri) { return Option_PrioritySet | ((pri & 0x7f) << 6); }
184  static inline unsigned GetPriorityOption(unsigned options) { return (options & Option_PrioritySet) != 0 ? ((options >> 6) & 0x7f) : (int)DefaultPriority; }
185 
186  void CopyTo(H501_Descriptor & descriptor);
187  static PBoolean CopyToAddressTemplate(H501_AddressTemplate & addressTemplates,
188  const H225_EndpointType & ep,
189  const H225_ArrayOf_AliasAddress & aliases,
190  const H225_ArrayOf_AliasAddress & transportAddress,
191  unsigned options = H323PeerElementDescriptor::Protocol_H323);
192 
193  static void SetProtocolList(H501_ArrayOf_SupportedProtocols & h501Protocols, unsigned protocols);
194  static unsigned GetProtocolList(const H501_ArrayOf_SupportedProtocols & h501Protocols);
195 
197 
198  PBoolean ContainsNonexistent();
199 
200  enum States {
204  } state;
205 
206  H501_ArrayOf_AddressTemplate addressTemplates;
207  PString gatekeeperID;
208  PTime lastChanged;
209  POrdinalKey creator;
210 };
211 
212 
214 
215 class H323PeerElementServiceRelationship : public PSafeObject
216 {
217  PCLASSINFO(H323PeerElementServiceRelationship, PSafeObject);
218  public:
220  : m_ordinal(0)
221  { }
222 
224  : m_serviceID(_serviceID), m_ordinal(0)
225  { }
226 
227  Comparison Compare(const PObject & obj) const
228  { return m_serviceID.Compare(((H323PeerElementServiceRelationship&)obj).m_serviceID); }
229 
231  POrdinalKey m_ordinal;
233  PString m_name;
237 };
238 
239 
241 
245 {
246  PCLASSINFO(H323PeerElement, H323_AnnexG);
247  public:
253  H323EndPoint & endpoint,
254  H323Transport * transport = NULL
255  );
257  H323EndPoint & endpoint,
258  const H323TransportAddress & addr
259  );
260 
265 
266  enum Error {
272  };
273 
274  enum {
278  };
279 
284  void PrintOn(
285  ostream & strm
286  ) const;
288 
289  PSafePtr<H323PeerElementDescriptor> GetFirstDescriptor(
290  PSafetyMode mode = PSafeReference
291  ) { return PSafePtr<H323PeerElementDescriptor>(descriptors, mode); }
292 
293  PSafePtr<H323PeerElementServiceRelationship> GetFirstLocalServiceRelationship(
294  PSafetyMode mode = PSafeReference
295  ) { return PSafePtr<H323PeerElementServiceRelationship>(localServiceRelationships, mode); }
296 
297  PSafePtr<H323PeerElementServiceRelationship> GetFirstRemoteServiceRelationship(
298  PSafetyMode mode = PSafeReference
299  ) { return PSafePtr<H323PeerElementServiceRelationship>(remoteServiceRelationships, mode); }
300 
301  void SetLocalName(const PString & name);
302  PString GetLocalName() const;
303 
304  void SetDomainName(const PString & name);
305  PString GetDomainName() const;
306 
307  /*********************************************************
308  functions to establish and break service relationships
309  */
310 
313  PBoolean SetOnlyServiceRelationship(const PString & peer, PBoolean keepTrying = true);
314  PBoolean AddServiceRelationship(const H323TransportAddress & peer, PBoolean keepTrying = true);
315  PBoolean AddServiceRelationship(const H323TransportAddress & peer, OpalGloballyUniqueID & serviceID, PBoolean keepTrying = true);
316  PBoolean RemoveServiceRelationship(const OpalGloballyUniqueID & serviceID, int reason = H501_ServiceReleaseReason::e_terminated);
317  PBoolean RemoveServiceRelationship(const H323TransportAddress & peer, int reason = H501_ServiceReleaseReason::e_terminated);
319 
323 
326  PBoolean ServiceRelease(const OpalGloballyUniqueID & serviceID, unsigned reason);
327 
328  /*********************************************************
329  functions to manipulate the local descriptor table
330  */
331 
332  PBoolean AddDescriptor(
333  const OpalGloballyUniqueID & descriptorID,
334  const PStringArray & aliases,
335  const H323TransportAddressArray & transportAddrs,
336  unsigned options = H323PeerElementDescriptor::Protocol_H323,
337  PBoolean now = false
338  );
339 
340  PBoolean AddDescriptor(
341  const OpalGloballyUniqueID & descriptorID,
342  const H225_ArrayOf_AliasAddress & aliases,
343  const H323TransportAddressArray & transportAddrs,
344  unsigned options = H323PeerElementDescriptor::Protocol_H323,
345  PBoolean now = false
346  );
347 
348  PBoolean AddDescriptor(
349  const OpalGloballyUniqueID & descriptorID,
350  const H225_ArrayOf_AliasAddress & aliases,
351  const H225_ArrayOf_AliasAddress & transportAddr,
352  unsigned options = H323PeerElementDescriptor::Protocol_H323,
353  PBoolean now = false
354  );
355 
356  PBoolean AddDescriptor(
357  const OpalGloballyUniqueID & descriptorID,
358  const POrdinalKey & creator,
359  const H225_ArrayOf_AliasAddress & alias,
360  const H225_ArrayOf_AliasAddress & transportAddresses,
361  unsigned options = H323PeerElementDescriptor::Protocol_H323,
362  PBoolean now = false
363  );
364 
365  PBoolean AddDescriptor(
366  const OpalGloballyUniqueID & descriptorID,
367  const POrdinalKey & creator,
368  const H501_ArrayOf_AddressTemplate & addressTemplates,
369  const PTime & updateTime,
370  PBoolean now = false
371  );
372 
375  PBoolean DeleteDescriptor(const PString & alias, PBoolean now = false);
376  PBoolean DeleteDescriptor(const H225_AliasAddress & alias, PBoolean now = false);
377  PBoolean DeleteDescriptor(const OpalGloballyUniqueID & descriptorID, PBoolean now = false);
378 
381  PBoolean AccessRequest(
382  const PString & searchAlias,
383  PStringArray & destAliases,
384  H323TransportAddress & transportAddress,
386  );
387 
388  PBoolean AccessRequest(
389  const PString & searchAlias,
390  H225_ArrayOf_AliasAddress & destAliases,
391  H323TransportAddress & transportAddress,
393  );
394 
395  PBoolean AccessRequest(
396  const H225_AliasAddress & searchAlias,
397  H225_ArrayOf_AliasAddress & destAliases,
398  H323TransportAddress & transportAddress,
400  );
401 
402  PBoolean AccessRequest(
403  const H225_AliasAddress & alias,
404  H225_ArrayOf_AliasAddress & destAliases,
405  H225_AliasAddress & transportAddress,
407  );
408 
409  /*********************************************************
410  functions to send send descriptors to another peer element
411  */
412  PBoolean UpdateDescriptor(H323PeerElementDescriptor * descriptor);
413  PBoolean UpdateDescriptor(H323PeerElementDescriptor * descriptor, H501_UpdateInformation_updateType::Choices updateType);
414 
415 
417  H323PeerElementDescriptor * descriptor,
418  H501_UpdateInformation_updateType::Choices updateType);
419 
421  H323PeerElementDescriptor * descriptor,
422  H501_UpdateInformation_updateType::Choices updateType);
423 
425  H501PDU & request,
426  H501PDU & confirmPDU);
427 
429  H501PDU & request,
430  H501PDU & confirmPDU);
431 
432 
433  /*********************************************************
434  low level request functions
435  */
436 
437  PBoolean MakeRequest(H323_AnnexG::Request & request);
438 
441 
442  virtual void OnNewDescriptor(const H323PeerElementDescriptor &) { }
445 
449 
450  PBoolean OnReceiveServiceRequest(const H501PDU & pdu, const H501_ServiceRequest & pduBody);
451  PBoolean OnReceiveServiceConfirmation(const H501PDU & pdu, const H501_ServiceConfirmation & pduBody);
452 
453  PBoolean OnReceiveDescriptorUpdate(const H501PDU & pdu, const H501_DescriptorUpdate & pduBody);
454  PBoolean OnReceiveDescriptorUpdateACK(const H501PDU & pdu, const H501_DescriptorUpdateAck & pduBody);
455 
456  PBoolean OnReceiveAccessRequest(const H501PDU & pdu, const H501_AccessRequest & pduBody);
457  PBoolean OnReceiveAccessConfirmation (const H501PDU & pdu, const H501_AccessConfirmation & pduBody);
458  PBoolean OnReceiveAccessRejection(const H501PDU & pdu, const H501_AccessRejection & pduBody);
459 
460  class AliasKey : public H225_AliasAddress
461  {
462  public:
463  AliasKey(const H225_AliasAddress & _alias, const OpalGloballyUniqueID & _id, PINDEX _pos, PBoolean _wild = false)
464  : H225_AliasAddress(_alias), id(_id), pos(_pos), wild(_wild)
465  { }
466 
468  PINDEX pos;
469  PBoolean wild;
470  };
471 
472  protected:
473  void Construct();
474 
476  const H323TransportAddress & peer,
477  H323PeerElementDescriptor * descriptor,
478  H501_UpdateInformation_updateType::Choices updateType);
479 
483 
484  virtual H323PeerElementDescriptor * CreateDescriptor(const OpalGloballyUniqueID & descriptorID);
486  virtual AliasKey * CreateAliasKey(const H225_AliasAddress & alias, const OpalGloballyUniqueID & id, PINDEX pos, PBoolean wild = false);
487 
488  void RemoveDescriptorInformation(const H501_ArrayOf_AddressTemplate & addressTemplates);
489 
490  PDECLARE_NOTIFIER(PThread, H323PeerElement, MonitorMain);
491  PDECLARE_NOTIFIER(PThread, H323PeerElement, UpdateAllDescriptors);
492  PDECLARE_NOTIFIER(PTimer, H323PeerElement, TickleMonitor);
493 
494  PDECLARE_MUTEX(localNameMutex);
496  PString domainName;
497 
498  PDECLARE_MUTEX(m_requestMutex);
499  PThread * monitor;
501  PSyncPoint monitorTickle;
502 
503  PDECLARE_MUTEX(basePeerOrdinalMutex);
505 
506  // structures needed to maintain local service relationships (for which we receive a ServiceRequest)
507  PSafeSortedList<H323PeerElementServiceRelationship> localServiceRelationships;
508  PDECLARE_MUTEX(localPeerListMutex);
509  POrdinalSet localServiceOrdinals;
510 
511  // structures needed to maintain remote service relationships (for which we send a ServiceRequest)
512  PDECLARE_MUTEX(remotePeerListMutex);
513  PSafeSortedList<H323PeerElementServiceRelationship> remoteServiceRelationships;
514  PStringToString remotePeerAddrToServiceID;
515  PDICTIONARY(StringToOrdinalKey, PString, POrdinalKey);
516  StringToOrdinalKey remotePeerAddrToOrdinalKey;
517 
518  PSafeSortedList<H323PeerElementDescriptor> descriptors;
519 
520  PSORTED_LIST(AliasKeyList, H225_AliasAddress);
521 
522  PDECLARE_MUTEX(aliasMutex);
526 };
527 
528 
529 #endif // OPAL_H501
530 
531 #endif // OPAL_H323_PECLIENT_H
532 
533 
Definition: peclient.h:244
H501_ServiceRequest & srq
Definition: peclient.h:92
PString localIdentifier
Definition: peclient.h:495
Error SendUpdateDescriptor(H501PDU &pdu, const H323TransportAddress &peer, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
static unsigned GetPriorityOption(unsigned options)
Definition: peclient.h:184
virtual void OnAddServiceRelationship(const H323TransportAddress &)
Definition: peclient.h:439
PString GetName(const OpalMediaType &mediaType)
PTime m_lastUpdateTime
Definition: peclient.h:235
H323PeerElementServiceRelationship()
Definition: peclient.h:219
POrdinalKey m_ordinal
Definition: peclient.h:231
Options
Definition: peclient.h:166
enum H323PeerElementDescriptor::States state
PBoolean MakeRequest(H323_AnnexG::Request &request)
PBoolean OnReceiveServiceConfirmation(const H501PDU &pdu, const H501_ServiceConfirmation &pduBody)
Definition: h323annexg.h:52
H323PeerElementServiceRelationship(const OpalGloballyUniqueID &_serviceID)
Definition: peclient.h:223
H501DescriptorUpdate(H323PeerElement &pe, const H501PDU &pdu)
virtual void SetRejectReason(unsigned reasonCode)
H501ServiceRequest(H323PeerElement &pe, const H501PDU &pdu)
PBoolean OnReceiveAccessRejection(const H501PDU &pdu, const H501_AccessRejection &pduBody)
PTime m_createdTime
Definition: peclient.h:234
PBoolean AddDescriptor(const OpalGloballyUniqueID &descriptorID, const PStringArray &aliases, const H323TransportAddressArray &transportAddrs, unsigned options=H323PeerElementDescriptor::Protocol_H323, PBoolean now=false)
Error
Definition: peclient.h:266
virtual void OnRemoveServiceRelationship(const H323TransportAddress &)
Definition: peclient.h:440
virtual H323TransactionPDU * CreateRIP(unsigned sequenceNumber, unsigned delay) const
Definition: transports.h:788
PSafeSortedList< H323PeerElementServiceRelationship > localServiceRelationships
Definition: peclient.h:507
StringToOrdinalKey remotePeerAddrToOrdinalKey
Definition: peclient.h:516
Comparison Compare(const PObject &obj) const
PTime m_expireTime
Definition: peclient.h:236
virtual void OnUpdateDescriptor(const H323PeerElementDescriptor &)
Definition: peclient.h:443
H501_MessageCommonInfo & confirmCommon
Definition: peclient.h:67
Definition: h323trans.h:309
virtual void SetRejectReason(unsigned reasonCode)
Definition: peclient.h:203
H501_AccessRequest & arq
Definition: peclient.h:145
PBoolean RemoveServiceRelationship(const OpalGloballyUniqueID &serviceID, int reason=H501_ServiceReleaseReason::e_terminated)
PBoolean OnReceiveServiceRequest(const H501PDU &pdu, const H501_ServiceRequest &pduBody)
PSORTED_LIST(AliasKeyList, H225_AliasAddress)
virtual void OnRemoveDescriptor(const H323PeerElementDescriptor &)
Definition: peclient.h:444
H501_DescriptorUpdateAck & ack
Definition: peclient.h:120
Definition: peclient.h:202
void SetLocalName(const PString &name)
static unsigned SetPriorityOption(unsigned pri)
Definition: peclient.h:183
AliasKeyList specificAliasToDescriptorID
Definition: peclient.h:524
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)
PString gatekeeperID
Definition: peclient.h:207
PBoolean OnReceiveDescriptorUpdate(const H501PDU &pdu, const H501_DescriptorUpdate &pduBody)
Definition: transaddr.h:91
AliasKey(const H225_AliasAddress &_alias, const OpalGloballyUniqueID &_id, PINDEX _pos, PBoolean _wild=false)
Definition: peclient.h:463
PSafeSortedList< H323PeerElementDescriptor > descriptors
Definition: peclient.h:518
H323PeerElementDescriptor(const OpalGloballyUniqueID &_descriptorID)
Definition: peclient.h:160
void PrintOn(ostream &strm) const
Definition: peclient.h:460
OpalGloballyUniqueID id
Definition: peclient.h:467
H501_AccessConfirmation & acf
Definition: peclient.h:146
void SetDomainName(const PString &name)
PBoolean RemoveAllServiceRelationships()
AliasKeyList wildcardAliasToDescriptorID
Definition: peclient.h:525
void InternalRemoveServiceRelationship(const H323TransportAddress &peer)
PBoolean OnReceiveAccessRequest(const H501PDU &pdu, const H501_AccessRequest &pduBody)
OpalGloballyUniqueID m_serviceID
Definition: peclient.h:230
H501Transaction(H323PeerElement &pe, const H501PDU &pdu, PBoolean hasReject)
Definition: peclient.h:169
H323PeerElement & peerElement
Definition: peclient.h:70
H501_ServiceConfirmation & scf
Definition: peclient.h:93
virtual void OnNewDescriptor(const H323PeerElementDescriptor &)
Definition: peclient.h:442
Definition: peclient.h:76
POrdinalSet localServiceOrdinals
Definition: peclient.h:509
Definition: peclient.h:215
PBoolean OnReceiveAccessConfirmation(const H501PDU &pdu, const H501_AccessConfirmation &pduBody)
PTime lastChanged
Definition: peclient.h:208
AliasKeyList transportAddressToDescriptorID
Definition: peclient.h:523
Comparison Compare(const PObject &obj) const
Definition: peclient.h:227
Error SendAccessRequestByAddr(const H323TransportAddress &peerAddr, H501PDU &request, H501PDU &confirmPDU)
Error SendAccessRequestByID(const OpalGloballyUniqueID &peerID, H501PDU &request, H501PDU &confirmPDU)
virtual H323Transaction::Response OnAccessRequest(H501AccessRequest &info)
Definition: peclient.h:268
bool monitorStop
Definition: peclient.h:500
virtual Response OnHandlePDU()
Definition: h323trans.h:211
PDECLARE_MUTEX(localNameMutex)
Definition: peclient.h:103
Definition: peclient.h:269
PBoolean OnRemoteServiceRelationshipDisappeared(OpalGloballyUniqueID &serviceID, const H323TransportAddress &peer)
PBoolean DeleteDescriptor(const PString &alias, PBoolean now=false)
static void SetProtocolList(H501_ArrayOf_SupportedProtocols &h501Protocols, unsigned protocols)
H501AccessRequest(H323PeerElement &pe, const H501PDU &pdu)
Error ServiceRequestByID(OpalGloballyUniqueID &serviceID)
Error SendUpdateDescriptorByID(const OpalGloballyUniqueID &serviceID, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
static unsigned GetProtocolList(const H501_ArrayOf_SupportedProtocols &h501Protocols)
H323PeerElement(H323EndPoint &endpoint, H323Transport *transport=NULL)
PBoolean OnReceiveDescriptorUpdateACK(const H501PDU &pdu, const H501_DescriptorUpdateAck &pduBody)
Error SendUpdateDescriptorByAddr(const H323TransportAddress &peer, H323PeerElementDescriptor *descriptor, H501_UpdateInformation_updateType::Choices updateType)
Definition: h323trans.h:47
Definition: h501pdu.h:50
PThread * monitor
Definition: peclient.h:499
ValidationResult
Definition: h235auth.h:82
PSafePtr< H323PeerElementServiceRelationship > GetFirstLocalServiceRelationship(PSafetyMode mode=PSafeReference)
Definition: peclient.h:293
PSyncPoint monitorTickle
Definition: peclient.h:501
Definition: peclient.h:49
PSafePtr< H323PeerElementDescriptor > GetFirstDescriptor(PSafetyMode mode=PSafeReference)
Definition: peclient.h:289
virtual H323PeerElementServiceRelationship * CreateServiceRelationship()
virtual H235Authenticator::ValidationResult ValidatePDU() const
Definition: peclient.h:267
PBoolean AccessRequest(const PString &searchAlias, PStringArray &destAliases, H323TransportAddress &transportAddress, unsigned options=H323PeerElementDescriptor::Protocol_H323)
PBoolean SetOnlyServiceRelationship(const PString &peer, PBoolean keepTrying=true)
PBoolean UpdateDescriptor(H323PeerElementDescriptor *descriptor)
PBoolean ServiceRelease(const OpalGloballyUniqueID &serviceID, unsigned reason)
PBoolean wild
Definition: peclient.h:469
OpalGloballyUniqueID descriptorID
Definition: peclient.h:196
PINDEX basePeerOrdinal
Definition: peclient.h:504
void RemoveDescriptorInformation(const H501_ArrayOf_AddressTemplate &addressTemplates)
PString GetDomainName() const
H501_MessageCommonInfo & requestCommon
Definition: peclient.h:66
Definition: peclient.h:201
virtual H323PeerElementDescriptor * CreateDescriptor(const OpalGloballyUniqueID &descriptorID)
virtual H323Transaction::Response OnServiceRequest(H501ServiceRequest &info)
POrdinalKey creator
Definition: peclient.h:209
PStringToString remotePeerAddrToServiceID
Definition: peclient.h:514
H323Transaction::Response HandleServiceRequest(H501ServiceRequest &info)
PString GetLocalName() const
PINDEX pos
Definition: peclient.h:468
PString m_name
Definition: peclient.h:233
PSafeSortedList< H323PeerElementServiceRelationship > remoteServiceRelationships
Definition: peclient.h:513
virtual H323Transaction::Response OnDescriptorUpdate(H501DescriptorUpdate &info)
#define OpalGloballyUniqueID
Definition: guid.h:38
Response
Definition: h323trans.h:326
virtual AliasKey * CreateAliasKey(const H225_AliasAddress &alias, const OpalGloballyUniqueID &id, PINDEX pos, PBoolean wild=false)
void CopyTo(H501_Descriptor &descriptor)
Error ServiceRequestByAddr(const H323TransportAddress &peer)
Definition: h323ep.h:82
PDECLARE_NOTIFIER(PThread, H323PeerElement, MonitorMain)
virtual Response OnHandlePDU()
Definition: peclient.h:156
H323TransportAddress m_peer
Definition: peclient.h:232
Definition: peclient.h:129
States
Definition: peclient.h:200
Definition: transaddr.h:62
Definition: peclient.h:270
PSafePtr< H323PeerElementServiceRelationship > GetFirstRemoteServiceRelationship(PSafetyMode mode=PSafeReference)
Definition: peclient.h:297
virtual void SetRejectReason(unsigned reasonCode)
H501_ArrayOf_AddressTemplate addressTemplates
Definition: peclient.h:206
PString domainName
Definition: peclient.h:496
virtual Response OnHandlePDU()
H501_AccessRejection & arj
Definition: peclient.h:147
H501_ServiceRejection & srj
Definition: peclient.h:94
PDICTIONARY(StringToOrdinalKey, PString, POrdinalKey)
PBoolean AddServiceRelationship(const H323TransportAddress &peer, PBoolean keepTrying=true)
H501_DescriptorUpdate & du
Definition: peclient.h:119