OPAL  Version 3.18.8
h4601.h
Go to the documentation of this file.
1 /*
2  * h4601.h
3  *
4  * Virteos H.460 Implementation for the h323plus Library.
5  *
6  * Virteos is a Trade Mark of ISVO (Asia) Pte Ltd.
7  *
8  * Copyright (c) 2004 ISVO (Asia) Pte Ltd. All Rights Reserved.
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  * Alternatively, the contents of this file may be used under the terms
16  * of the General Public License (the "GNU License"), in which case the
17  * provisions of GNU License are applicable instead of those
18  * above. If you wish to allow use of your version of this file only
19  * under the terms of the GNU License and not to allow others to use
20  * your version of this file under the MPL, indicate your decision by
21  * deleting the provisions above and replace them with the notice and
22  * other provisions required by the GNU License. If you do not delete
23  * the provisions above, a recipient may use your version of this file
24  * under either the MPL or the GNU License."
25  *
26  * Software distributed under the License is distributed on an "AS IS"
27  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
28  * the License for the specific language governing rights and limitations
29  * under the License.
30  *
31  * The Original Code is derived from and used in conjunction with the
32  * OpenH323 Project (www.openh323.org/)
33  *
34  * The Initial Developer of the Original Code is ISVO (Asia) Pte Ltd.
35  *
36  * Contributor(s): Many thanks to Simon Horne.
37  * Robert Jongbloed (robertj@voxlucida.com.au).
38 */
39 
40 #ifndef OPAL_H460_H4601_H
41 #define OPAL_H460_H4601_H
42 
43 #ifdef P_USE_PRAGMA
44 #pragma interface
45 #endif
46 
47 #include <opal_config.h>
48 
49 #if OPAL_H460
50 
51 #include <asn/h225.h>
52 #include <h323/transaddr.h>
53 #include <opal/guid.h>
54 #include <h460/h460.h>
55 #include <ptlib/pluginmgr.h>
56 #include <ptclib/url.h>
57 
58 
59 class H323EndPoint;
60 class H323Connection;
61 class H460_Feature;
62 
63 
65 
75 class H460_FeatureID : public H225_GenericIdentifier
76 {
77  /* Due to some naughty reinterpret_cast<> of H225_GenericIdentifier to
78  H460_FeatureID in various palces, do not add members or do any virtual
79  function overrides in this class! */
80  public:
86 
89  H460_FeatureID(unsigned id);
90 
93  H460_FeatureID(const PASN_ObjectId & id);
94 
97  H460_FeatureID(const PString & id);
98 
101  H460_FeatureID(const H225_GenericIdentifier & id);
103 
109  PString GetOID() const;
110 
113  operator unsigned () const { return (const PASN_Integer &)*this; }
114 
117  operator PString () const { return ((const H225_GloballyUniqueID &)*this).AsString(); }
119 };
120 
121 
123 
128 class H460_FeatureContent : public H225_Content
129 {
130  /* Due to some naughty reinterpret_cast<> of H225_GenericIdentifier to
131  H460_FeatureID in various palces, do not add members or do any virtual
132  function overrides in this class! */
133  public:
139 
143  H460_FeatureContent(const PASN_OctetString & param);
144 
147  H460_FeatureContent(const PString & param);
148 
151  H460_FeatureContent(const PASN_BMPString & param);
152 
155  H460_FeatureContent(bool param);
156 
159  H460_FeatureContent(unsigned param, unsigned len);
160 
164 
167  H460_FeatureContent(const H225_AliasAddress & add);
168 
171  H460_FeatureContent(const PURL & add);
172 
176 
179  H460_FeatureContent(const H225_ArrayOf_EnumeratedParameter & table);
180 
184 
187  H460_FeatureContent(const H460_Feature & nested);
189 };
190 
191 
193 
198 class H460_FeatureParameter : public H225_EnumeratedParameter
199 {
200  /* Due to some naughty reinterpret_cast<> of H225_GenericIdentifier to
201  H460_FeatureID in various palces, do not add members or do any virtual
202  function overrides in this class! */
203  public:
209 
213 
216  H460_FeatureParameter(const H460_FeatureID & id, const H460_FeatureContent & content);
217 
220  H460_FeatureParameter(const H225_EnumeratedParameter & param);
222 
227  const H460_FeatureID & GetID() const { return reinterpret_cast<const H460_FeatureID &>(m_id); }
228 
231  void SetContent(const H460_FeatureContent & content);
233 
236  operator const PASN_OctetString &() const;
237  operator PString() const;
238  operator const PASN_BMPString &() const;
239  operator bool() const;
240  operator unsigned() const;
241  operator const H460_FeatureID &() const;
242  operator const H225_AliasAddress &() const;
243  operator H323TransportAddress() const;
244  operator const H225_ArrayOf_EnumeratedParameter &() const;
245  operator PURL() const;
246  operator OpalGloballyUniqueID() const;
247 
248  H460_FeatureParameter & operator=(const PASN_OctetString & value);
249  H460_FeatureParameter & operator=(const PString & value);
250  H460_FeatureParameter & operator=(const PASN_BMPString & value);
251  H460_FeatureParameter & operator=(bool value);
252  H460_FeatureParameter & operator=(unsigned value);
254  H460_FeatureParameter & operator=(const H225_AliasAddress & value);
256  H460_FeatureParameter & operator=(const H225_ArrayOf_EnumeratedParameter & value);
259 };
260 
261 
263 
267 class H460_FeatureDescriptor : public H225_FeatureDescriptor
268 {
269  /* Due to some naughty reinterpret_cast<> of H225_GenericIdentifier to
270  H460_FeatureID in various palces, do not add members or do any virtual
271  function overrides in this class! */
272  public:
278 
282 
285  H460_FeatureDescriptor(const H225_FeatureDescriptor & descriptor);
287 
290  const H460_FeatureID & GetID() const
291  { return reinterpret_cast<const H460_FeatureID &>(m_id); }
292 
296  const H460_FeatureID & id,
297  const H460_FeatureContent & content = H460_FeatureContent(),
298  bool unique = true
299  );
300 
304  H460_FeatureParameter * param,
305  bool unique = true
306  );
307 
310  void RemoveParameterAt(PINDEX index);
311 
314  void RemoveParameter(const H460_FeatureID & id);
315 
318  void ReplaceParameter(const H460_FeatureID & id, const H460_FeatureContent & content);
319 
322  H460_FeatureParameter & GetParameterAt(PINDEX index) const
323  { return reinterpret_cast<H460_FeatureParameter &>(m_parameters[index]); }
324 
327  PINDEX GetParameterIndex(const H460_FeatureID & id) const;
328 
332 
335  bool GetBooleanParameter(const H460_FeatureID & id) const;
336 
339  bool HasParameter(const H460_FeatureID & id) const;
340 
348  bool IsParameterIsUnique(const H460_FeatureID & id) const;
349 
352  PINDEX GetParameterCount() const
353  { return m_parameters.GetSize(); }
354 
358  PINDEX index
359  ) { return GetParameterAt(index); }
361 };
362 
363 
365 
369 class H460_Feature : public PObject
370 {
371  PCLASSINFO_WITH_CLONE(H460_Feature, PObject);
372  public:
379 
382  P_DECLARE_TRACED_ENUM(Category,
384  Needed,
385  Desired,
386  Supported
387  );
388  Category GetCategory() const { return m_category; }
389  void SetCategory(Category cat) { m_category = cat; }
391 
396  const H460_FeatureID & GetID() const
397  { return m_descriptor.GetID(); }
398 
401  void SetFeatureID(const H460_FeatureID & id) { m_descriptor.m_id = id; }
402 
405  virtual bool Initialise(H323EndPoint & ep, H323Connection * con);
406 
409  virtual bool IsNegotiated() const { return m_supportedByRemote; }
411 
417  const H460_FeatureID & id,
418  const H460_FeatureContent & content = H460_FeatureContent(),
419  bool unique = true
420  ) { return m_descriptor.AddParameter(id, content, unique); }
421 
425  H460_FeatureParameter * param,
426  bool unique = true
427  ) { return m_descriptor.AddParameter(param, unique); }
428 
431  virtual void RemoveParameterAt(
432  PINDEX index
433  ) { m_descriptor.RemoveParameterAt(index); }
434 
437  virtual void RemoveParameter(
438  const H460_FeatureID & id
439  ) { m_descriptor.RemoveParameter(id); }
440 
443  virtual void ReplaceParameter(
444  const H460_FeatureID id,
445  const H460_FeatureContent & content
446  ) { m_descriptor.ReplaceParameter(id, content); }
447 
451  PINDEX index
452  ) { return m_descriptor.GetParameterAt(index); }
453 
457  const H460_FeatureID & id
458  ) { return m_descriptor.GetParameter(id); }
459 
462  virtual bool HasParameter(
463  const H460_FeatureID & id
464  ) { return m_descriptor.HasParameter(id); }
465 
466  // Operators
468  PINDEX index
469  ) { return GetParameter(index); }
470 
474  const H460_FeatureID & id
475  ) { return GetParameter(id); }
476 
479  PINDEX GetParameterCount() const
480  { return m_descriptor.GetParameterCount(); }
482 
487  static PStringList GetFeatureNames(PPluginManager * pluginMgr = NULL);
488 
491  static H460_Feature * CreateFeature(
492  const PString & featurename,
493  PPluginManager * pluginMgr = NULL
494  );
496 
499  /* These are the main calls which can be overridden to
500  allow the various derived features access to the GEF
501  interface.
502  */
503  virtual bool OnSendPDU(H460_MessageType pduType, H460_FeatureDescriptor & pdu);
504  virtual void OnReceivePDU(H460_MessageType pduType, const H460_FeatureDescriptor & pdu);
505 
506  // PDU calls (Used in the H225_RAS Class)
507  virtual bool OnSendGatekeeperRequest(H460_FeatureDescriptor & /*pdu*/) { return false; }
508  virtual bool OnSendGatekeeperConfirm(H460_FeatureDescriptor & /*pdu*/) { return false; }
509  virtual bool OnSendGatekeeperReject(H460_FeatureDescriptor & /*pdu*/) { return false; }
510 
511  virtual void OnReceiveGatekeeperRequest(const H460_FeatureDescriptor & /*pdu*/) { }
512  virtual void OnReceiveGatekeeperConfirm(const H460_FeatureDescriptor & /*pdu*/) { }
513  virtual void OnReceiveGatekeeperReject(const H460_FeatureDescriptor & /*pdu*/) { }
514 
515  virtual bool OnSendRegistrationRequest(H460_FeatureDescriptor & /*pdu*/, bool /*lightweight*/) { return false; }
516  virtual bool OnSendRegistrationConfirm(H460_FeatureDescriptor & /*pdu*/) { return false; }
517  virtual bool OnSendRegistrationReject(H460_FeatureDescriptor & /*pdu*/) { return false; }
518 
519  virtual void OnReceiveRegistrationRequest(const H460_FeatureDescriptor & /*pdu*/) { }
520  virtual void OnReceiveRegistrationConfirm(const H460_FeatureDescriptor & /*pdu*/) { }
521  virtual void OnReceiveRegistrationReject(const H460_FeatureDescriptor & /*pdu*/) { }
522 
523  virtual bool OnSendAdmissionRequest(H460_FeatureDescriptor & /*pdu*/) { return false; }
524  virtual bool OnSendAdmissionConfirm(H460_FeatureDescriptor & /*pdu*/) { return false; }
525  virtual bool OnSendAdmissionReject(H460_FeatureDescriptor & /*pdu*/) { return false; }
526 
527  virtual void OnReceiveAdmissionRequest(const H460_FeatureDescriptor & /*pdu*/) { }
528  virtual void OnReceiveAdmissionConfirm(const H460_FeatureDescriptor & /*pdu*/) { }
529  virtual void OnReceiveAdmissionReject(const H460_FeatureDescriptor & /*pdu*/) { }
530 
531  virtual bool OnSendLocationRequest(H460_FeatureDescriptor & /*pdu*/) { return false; }
532  virtual bool OnSendLocationConfirm(H460_FeatureDescriptor & /*pdu*/) { return false; }
533  virtual bool OnSendLocationReject(H460_FeatureDescriptor & /*pdu*/) { return false; }
534 
535  virtual void OnReceiveLocationRequest(const H460_FeatureDescriptor & /*pdu*/) { }
536  virtual void OnReceiveLocationConfirm(const H460_FeatureDescriptor & /*pdu*/) { }
537  virtual void OnReceiveLocationReject(const H460_FeatureDescriptor & /*pdu*/) { }
538 
539  virtual bool OnSendServiceControlIndication(H460_FeatureDescriptor & /*pdu*/) { return false; }
540  virtual bool OnSendServiceControlResponse(H460_FeatureDescriptor & /*pdu*/) { return false; }
541 
543  virtual void OnReceiveServiceControlResponse(const H460_FeatureDescriptor & /*pdu*/) { }
544 
545  virtual bool OnSendNonStandardMessage(H460_FeatureDescriptor & /*pdu*/) { return false; }
546  virtual void OnReceiveNonStandardMessage(const H460_FeatureDescriptor & /*pdu*/) { }
547 
548  virtual bool OnSendUnregistrationRequest(H460_FeatureDescriptor & /*pdu*/) { return false; }
549  virtual void OnReceiveUnregistrationRequest(const H460_FeatureDescriptor & /*pdu*/) { }
550 
551  virtual bool OnSendEndpoint(H460_FeatureDescriptor & /*pdu*/) { return false; }
552  virtual void OnReceiveEndpoint(const H460_FeatureDescriptor & /*pdu*/) { }
553 
554  virtual bool OnSendInfoRequestMessage(H460_FeatureDescriptor & /*pdu*/) { return false; }
555  virtual void OnReceiveInfoRequestMessage(const H460_FeatureDescriptor & /*pdu*/) { }
556 
557  virtual bool OnSendInfoRequestResponseMessage(H460_FeatureDescriptor & /*pdu*/) { return false; }
559 
560  virtual bool OnSendDisengagementRequestMessage(H460_FeatureDescriptor & /*pdu*/) { return false; }
562 
563  virtual bool OnSendDisengagementConfirmMessage(H460_FeatureDescriptor & /*pdu*/) { return false; }
566 
569  // UUIE Calls (Used in the H323SignalPDU Class)
570  virtual bool OnSendSetup_UUIE(H460_FeatureDescriptor & /*pdu*/) { return false; }
571  virtual void OnReceiveSetup_UUIE(const H460_FeatureDescriptor & /*pdu*/) { }
572 
573  virtual bool OnSendAlerting_UUIE(H460_FeatureDescriptor & /*pdu*/) { return false; }
574  virtual void OnReceiveAlerting_UUIE(const H460_FeatureDescriptor & /*pdu*/) { }
575 
576  virtual bool OnSendCallProceeding_UUIE(H460_FeatureDescriptor & /*pdu*/) { return false; }
577  virtual void OnReceiveCallProceeding_UUIE(const H460_FeatureDescriptor & /*pdu*/) { }
578 
579  virtual bool OnSendCallConnect_UUIE(H460_FeatureDescriptor & /*pdu*/) { return false; }
580  virtual void OnReceiveCallConnect_UUIE(const H460_FeatureDescriptor & /*pdu*/) { }
581 
582  virtual bool OnSendFacility_UUIE(H460_FeatureDescriptor & /*pdu*/) { return false; }
583  virtual void OnReceiveFacility_UUIE(const H460_FeatureDescriptor & /*pdu*/) { }
584 
585  virtual bool OnSendReleaseComplete_UUIE(H460_FeatureDescriptor & /*pdu*/) { return false; }
586  virtual void OnReceiveReleaseComplete_UUIE(const H460_FeatureDescriptor & /*pdu*/) { }
587 
588  virtual bool OnSendUnAllocatedPDU(H460_FeatureDescriptor & /*pdu*/) { return false; }
589  virtual void OnReceivedUnAllocatedPDU(const H460_FeatureDescriptor & /*pdu*/) { }
590 
591  virtual bool OnSendingOLCGenericInformation(unsigned /*sessionID*/, H245_ArrayOf_GenericParameter & /*param*/, bool /*ack*/) { return false; }
592  virtual void OnReceiveOLCGenericInformation(unsigned /*sessionID */, const H245_ArrayOf_GenericParameter & /*param*/, bool /*isAck*/) { }
594 
595  H323EndPoint * GetEndPoint() const { return m_endpoint; }
597 
598  static H460_Feature * FromContext(PObject * context, const H460_FeatureID & id);
599  template <class FEAT> static bool FromContext(PObject * context, FEAT * & feature)
600  {
601  feature = dynamic_cast<FEAT *>(FromContext(context, FEAT::ID()));
602  return feature != NULL;
603  }
604 
605  protected:
606  H460_Feature * GetFeatureOnGk(const H460_FeatureID & id) const;
607 
608  template <class FEAT> bool GetFeatureOnGk(FEAT * & feature, const H460_FeatureID & id = FEAT::ID())
609  {
610  feature = dynamic_cast<FEAT *>(GetFeatureOnGk(id));
611  return feature != NULL;
612  }
613 
614  bool IsFeatureNegotiatedOnGk(const H460_FeatureID & id) const;
615 
616 #if OPAL_H460_NAT
617  PNatMethod * GetNatMethod(const char * methodName) const;
618 
619  template <class METH> bool GetNatMethod(const char * methodName, METH * & natMethod) const
620  {
621  natMethod = dynamic_cast<METH *>(GetNatMethod(methodName));
622  return natMethod != NULL;
623  }
624 #endif // OPAL_H460_NAT
625 
626  Category m_category;
631 };
632 
633 
636 class H460_FeatureSet : public PObject, public map<H460_FeatureID, H460_Feature *>
637 {
638  PCLASSINFO(H460_FeatureSet, PObject);
639  public:
643  H323EndPoint & ep
644  );
646 
647 
650  virtual void LoadFeatureSet(
651  H323Connection * con = NULL
652  );
653 
656  bool AddFeature(H460_Feature * feat);
657 
660  void RemoveFeature(const H460_FeatureID & id);
661 
664  H460_Feature * GetFeature(const H460_FeatureID & id);
665  template <class FEAT> bool GetFeature(FEAT * & feature, const H460_FeatureID & id = FEAT::ID())
666  {
667  feature = dynamic_cast<FEAT *>(GetFeature(id));
668  return feature != NULL;
669  }
670 
673  bool HasFeature(const H460_FeatureID & feat);
674 
678  virtual void OnReceivePDU(
679  H460_MessageType pduType,
680  const H225_FeatureSet & pdu
681  );
682 
686  virtual bool OnSendPDU(
687  H460_MessageType pduType,
688  H225_FeatureSet & pdu
689  );
690 
694 
695  static bool Copy(H225_FeatureSet & fs, const H225_ArrayOf_GenericData & gd);
696  static bool Copy(H225_ArrayOf_GenericData & gd, const H225_FeatureSet & fs);
697 
698  protected:
699  void OnReceivePDU(H460_MessageType pduType, const H225_ArrayOf_FeatureDescriptor & descriptors);
700 
702 };
703 
704 
706 
708 
709 #define H460_FEATURE(name, friendlyName) \
710  PCREATE_PLUGIN(name, H460_Feature, H460_Feature##name, PPlugin_H460_Feature, \
711  virtual const char * GetFriendlyName() const { return friendlyName; } \
712  )
713 
714 
715 #if OPAL_H460_NAT
716  PPLUGIN_STATIC_LOAD(Std18, H460_Feature);
717  PPLUGIN_STATIC_LOAD(Std19, H460_Feature);
718  PPLUGIN_STATIC_LOAD(Std23, H460_Feature);
719  PPLUGIN_STATIC_LOAD(Std24, H460_Feature);
720 #endif
721 
722 
723 #endif // OPAL_H460
724 
725 #endif // OPAL_H460_H4601_H
H323EndPoint * GetEndPoint() const
Definition: h4601.h:595
virtual bool OnSendPDU(H460_MessageType pduType, H460_FeatureDescriptor &pdu)
virtual bool OnSendPDU(H460_MessageType pduType, H225_FeatureSet &pdu)
Definition: h4601.h:636
bool m_supportedByRemote
Definition: h4601.h:630
H460_Feature * GetFeatureOnGk(const H460_FeatureID &id) const
PINDEX GetParameterCount() const
Definition: h4601.h:479
H460_FeatureParameter & GetParameter(const H460_FeatureID &id) const
virtual bool OnSendRegistrationRequest(H460_FeatureDescriptor &, bool)
Definition: h4601.h:515
virtual void OnReceiveGatekeeperReject(const H460_FeatureDescriptor &)
Definition: h4601.h:513
void SetFeatureID(const H460_FeatureID &id)
Definition: h4601.h:401
virtual bool OnSendUnregistrationRequest(H460_FeatureDescriptor &)
Definition: h4601.h:548
virtual void OnReceivedUnAllocatedPDU(const H460_FeatureDescriptor &)
Definition: h4601.h:589
virtual bool OnSendLocationReject(H460_FeatureDescriptor &)
Definition: h4601.h:533
virtual void OnReceiveServiceControlResponse(const H460_FeatureDescriptor &)
Definition: h4601.h:543
virtual void OnReceiveSetup_UUIE(const H460_FeatureDescriptor &)
Definition: h4601.h:571
H460_Feature(const H460_FeatureID &id=H460_FeatureID())
virtual void OnReceiveInfoRequestResponseMessage(const H460_FeatureDescriptor &)
Definition: h4601.h:558
bool AddFeature(H460_Feature *feat)
virtual void OnReceiveLocationReject(const H460_FeatureDescriptor &)
Definition: h4601.h:537
virtual void OnReceiveLocationConfirm(const H460_FeatureDescriptor &)
Definition: h4601.h:536
virtual bool OnSendAdmissionRequest(H460_FeatureDescriptor &)
Definition: h4601.h:523
bool GetBooleanParameter(const H460_FeatureID &id) const
virtual bool OnSendGatekeeperReject(H460_FeatureDescriptor &)
Definition: h4601.h:509
Definition: h4601.h:267
H460_FeatureParameter & operator[](PINDEX index)
Definition: h4601.h:357
void RemoveParameterAt(PINDEX index)
virtual void OnReceivePDU(H460_MessageType pduType, const H460_FeatureDescriptor &pdu)
const H460_FeatureDescriptor & GetDescriptor() const
Definition: h4601.h:596
H460_FeatureParameter & AddParameter(const H460_FeatureID &id, const H460_FeatureContent &content=H460_FeatureContent(), bool unique=true)
virtual void OnReceiveReleaseComplete_UUIE(const H460_FeatureDescriptor &)
Definition: h4601.h:586
void RemoveFeature(const H460_FeatureID &id)
virtual void OnReceiveCallConnect_UUIE(const H460_FeatureDescriptor &)
Definition: h4601.h:580
virtual void OnReceiveServiceControlIndication(const H460_FeatureDescriptor &)
Definition: h4601.h:542
virtual void OnReceiveCallProceeding_UUIE(const H460_FeatureDescriptor &)
Definition: h4601.h:577
virtual void OnReceiveOLCGenericInformation(unsigned, const H245_ArrayOf_GenericParameter &, bool)
Definition: h4601.h:592
void SetCategory(Category cat)
Definition: h4601.h:389
Category GetCategory() const
Definition: h4601.h:388
bool GetFeatureOnGk(FEAT *&feature, const H460_FeatureID &id=FEAT::ID())
Definition: h4601.h:608
PINDEX GetParameterIndex(const H460_FeatureID &id) const
void SetContent(const H460_FeatureContent &content)
virtual bool OnSendFacility_UUIE(H460_FeatureDescriptor &)
Definition: h4601.h:582
virtual void OnReceiveAlerting_UUIE(const H460_FeatureDescriptor &)
Definition: h4601.h:574
H323Connection * m_connection
Definition: h4601.h:628
virtual void OnReceiveAdmissionRequest(const H460_FeatureDescriptor &)
Definition: h4601.h:527
H460_FeatureSet(H323EndPoint &ep)
virtual void OnReceiveInfoRequestMessage(const H460_FeatureDescriptor &)
Definition: h4601.h:555
virtual bool OnSendReleaseComplete_UUIE(H460_FeatureDescriptor &)
Definition: h4601.h:585
virtual void OnReceiveDisengagementConfirmMessage(const H460_FeatureDescriptor &)
Definition: h4601.h:564
virtual H460_FeatureParameter & GetParameter(const H460_FeatureID &id)
Definition: h4601.h:456
void ReplaceParameter(const H460_FeatureID &id, const H460_FeatureContent &content)
virtual bool OnSendUnAllocatedPDU(H460_FeatureDescriptor &)
Definition: h4601.h:588
P_DECLARE_TRACED_ENUM(Category, Needed, Desired, Supported)
Category for feature.
virtual bool OnSendInfoRequestMessage(H460_FeatureDescriptor &)
Definition: h4601.h:554
virtual bool OnSendDisengagementRequestMessage(H460_FeatureDescriptor &)
Definition: h4601.h:560
PString GetOID() const
bool IsParameterIsUnique(const H460_FeatureID &id) const
bool GetFeature(FEAT *&feature, const H460_FeatureID &id=FEAT::ID())
Definition: h4601.h:665
virtual void OnReceiveRegistrationRequest(const H460_FeatureDescriptor &)
Definition: h4601.h:519
bool HasParameter(const H460_FeatureID &id) const
virtual H460_FeatureParameter & GetParameterAt(PINDEX index)
Definition: h4601.h:450
virtual bool OnSendSetup_UUIE(H460_FeatureDescriptor &)
Definition: h4601.h:570
virtual bool OnSendLocationRequest(H460_FeatureDescriptor &)
Definition: h4601.h:531
static H460_Feature * CreateFeature(const PString &featurename, PPluginManager *pluginMgr=NULL)
virtual H460_FeatureParameter & AddParameter(const H460_FeatureID &id, const H460_FeatureContent &content=H460_FeatureContent(), bool unique=true)
Definition: h4601.h:416
virtual bool Initialise(H323EndPoint &ep, H323Connection *con)
virtual bool OnSendNonStandardMessage(H460_FeatureDescriptor &)
Definition: h4601.h:545
virtual bool OnSendServiceControlIndication(H460_FeatureDescriptor &)
Definition: h4601.h:539
virtual bool OnSendAlerting_UUIE(H460_FeatureDescriptor &)
Definition: h4601.h:573
virtual bool OnSendAdmissionConfirm(H460_FeatureDescriptor &)
Definition: h4601.h:524
H460_Feature * GetFeature(const H460_FeatureID &id)
virtual bool OnSendLocationConfirm(H460_FeatureDescriptor &)
Definition: h4601.h:532
const H460_FeatureID & GetID() const
Definition: h4601.h:396
H460_FeatureParameter & operator[](const H460_FeatureID &id)
Definition: h4601.h:473
const H460_FeatureID & GetID() const
Definition: h4601.h:290
virtual void OnReceiveLocationRequest(const H460_FeatureDescriptor &)
Definition: h4601.h:535
Definition: h323con.h:137
Definition: h460.h:53
virtual void OnReceiveEndpoint(const H460_FeatureDescriptor &)
Definition: h4601.h:552
virtual bool OnSendCallConnect_UUIE(H460_FeatureDescriptor &)
Definition: h4601.h:579
PCREATE_PLUGIN_SERVICE(H460_Feature)
virtual bool OnSendInfoRequestResponseMessage(H460_FeatureDescriptor &)
Definition: h4601.h:557
virtual void OnReceiveRegistrationConfirm(const H460_FeatureDescriptor &)
Definition: h4601.h:520
virtual void OnReceiveAdmissionConfirm(const H460_FeatureDescriptor &)
Definition: h4601.h:528
virtual bool OnSendDisengagementConfirmMessage(H460_FeatureDescriptor &)
Definition: h4601.h:563
virtual bool OnSendCallProceeding_UUIE(H460_FeatureDescriptor &)
Definition: h4601.h:576
H323EndPoint & GetEndPoint()
Definition: h4601.h:693
virtual void OnReceiveAdmissionReject(const H460_FeatureDescriptor &)
Definition: h4601.h:529
H460_FeatureParameter & operator=(const PASN_OctetString &value)
virtual bool OnSendingOLCGenericInformation(unsigned, H245_ArrayOf_GenericParameter &, bool)
Definition: h4601.h:591
void RemoveParameter(const H460_FeatureID &id)
virtual void ReplaceParameter(const H460_FeatureID id, const H460_FeatureContent &content)
Definition: h4601.h:443
virtual void OnReceivePDU(H460_MessageType pduType, const H225_FeatureSet &pdu)
Category m_category
Definition: h4601.h:626
virtual void OnReceiveDisengagementRequestMessage(const H460_FeatureDescriptor &)
Definition: h4601.h:561
virtual bool OnSendEndpoint(H460_FeatureDescriptor &)
Definition: h4601.h:551
static bool FromContext(PObject *context, FEAT *&feature)
Definition: h4601.h:599
H323EndPoint * m_endpoint
Definition: h4601.h:627
virtual bool OnSendAdmissionReject(H460_FeatureDescriptor &)
Definition: h4601.h:525
virtual bool OnSendRegistrationReject(H460_FeatureDescriptor &)
Definition: h4601.h:517
Definition: h4601.h:75
H323EndPoint & m_endpoint
Definition: h4601.h:701
Definition: h4601.h:128
PINDEX GetParameterCount() const
Definition: h4601.h:352
virtual bool OnSendRegistrationConfirm(H460_FeatureDescriptor &)
Definition: h4601.h:516
H460_FeatureParameter & GetParameterAt(PINDEX index) const
Definition: h4601.h:322
H460_FeatureParameter & operator[](PINDEX index)
Definition: h4601.h:467
virtual bool OnSendGatekeeperRequest(H460_FeatureDescriptor &)
Definition: h4601.h:507
virtual void OnReceiveNonStandardMessage(const H460_FeatureDescriptor &)
Definition: h4601.h:546
virtual void OnReceiveUnregistrationRequest(const H460_FeatureDescriptor &)
Definition: h4601.h:549
Definition: h4601.h:198
virtual void OnReceiveRegistrationReject(const H460_FeatureDescriptor &)
Definition: h4601.h:521
const H460_FeatureID & GetID() const
Definition: h4601.h:227
static PStringList GetFeatureNames(PPluginManager *pluginMgr=NULL)
virtual void LoadFeatureSet(H323Connection *con=NULL)
#define OpalGloballyUniqueID
Definition: guid.h:38
virtual void RemoveParameterAt(PINDEX index)
Definition: h4601.h:431
Definition: h323ep.h:82
bool HasFeature(const H460_FeatureID &feat)
H460_FeatureDescriptor m_descriptor
Definition: h4601.h:629
Definition: transaddr.h:62
virtual void RemoveParameter(const H460_FeatureID &id)
Definition: h4601.h:437
static bool Copy(H225_FeatureSet &fs, const H225_ArrayOf_GenericData &gd)
virtual H460_FeatureParameter & AddParameter(H460_FeatureParameter *param, bool unique=true)
Definition: h4601.h:424
virtual bool IsNegotiated() const
Definition: h4601.h:409
virtual bool HasParameter(const H460_FeatureID &id)
Definition: h4601.h:462
virtual bool OnSendServiceControlResponse(H460_FeatureDescriptor &)
Definition: h4601.h:540
Definition: h4601.h:369
virtual void OnReceiveFacility_UUIE(const H460_FeatureDescriptor &)
Definition: h4601.h:583
virtual bool OnSendGatekeeperConfirm(H460_FeatureDescriptor &)
Definition: h4601.h:508
virtual void OnReceiveGatekeeperConfirm(const H460_FeatureDescriptor &)
Definition: h4601.h:512
virtual void OnReceiveGatekeeperRequest(const H460_FeatureDescriptor &)
Definition: h4601.h:511
bool IsFeatureNegotiatedOnGk(const H460_FeatureID &id) const
static H460_Feature * FromContext(PObject *context, const H460_FeatureID &id)