ies.h

Go to the documentation of this file.
00001 /*
00002  *
00003  * Inter Asterisk Exchange 2
00004  * 
00005  * The classes used to hold Information Elements.
00006  * 
00007  * Open Phone Abstraction Library (OPAL)
00008  *
00009  * Copyright (c) 2005 Indranet Technologies Ltd.
00010  *
00011  * The contents of this file are subject to the Mozilla Public License
00012  * Version 1.0 (the "License"); you may not use this file except in
00013  * compliance with the License. You may obtain a copy of the License at
00014  * http://www.mozilla.org/MPL/
00015  *
00016  * Software distributed under the License is distributed on an "AS IS"
00017  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00018  * the License for the specific language governing rights and limitations
00019  * under the License.
00020  *
00021  * The Original Code is Open Phone Abstraction Library.
00022  *
00023  * The Initial Developer of the Original Code is Indranet Technologies Ltd.
00024  *
00025  * The author of this code is Derek J Smithies
00026  *
00027  * $Revision: 21283 $
00028  * $Author: rjongbloed $
00029  * $Date: 2008-10-11 07:10:58 +0000 (Sat, 11 Oct 2008) $
00030  */
00031 
00032 #ifndef OPAL_IAX2_IES_H
00033 #define OPAL_IAX2_IES_H
00034 
00035 #ifndef _PTLIB_H
00036 #include <ptlib.h>
00037 #endif
00038 
00039 #include <opal/buildopts.h>
00040 
00041 #if OPAL_IAX2
00042 
00043 #include <ptlib/sockets.h>
00044 #include <iax2/iedata.h>
00045 
00046 #ifdef P_USE_PRAGMA
00047 #pragma interface
00048 #endif
00049 
00050 
00051 class IAX2Ie;
00052 class IAX2Encryption;
00053 
00055 class IAX2Ie : public PObject
00056 { 
00057   PCLASSINFO(IAX2Ie, PObject);
00058  public:
00060   enum IAX2IeTypeCode {    
00061     ie_calledNumber      = 1,     
00062     ie_callingNumber     = 2,     
00063     ie_callingAni        = 3,     
00064     ie_callingName       = 4,     
00065     ie_calledContext     = 5,     
00066     ie_userName          = 6,     
00067     ie_password          = 7,     
00068     ie_capability        = 8,     
00069     ie_format            = 9,     
00070     ie_language          = 10,    
00071     ie_version           = 11,    
00072     ie_adsicpe           = 12,    
00073     ie_dnid              = 13,    
00074     ie_authMethods       = 14,    
00075     ie_challenge         = 15,    
00076     ie_md5Result         = 16,    
00077     ie_rsaResult         = 17,    
00078     ie_apparentAddr      = 18,    
00079     ie_refresh           = 19,    
00080     ie_dpStatus          = 20,    
00081     ie_callNo            = 21,    
00082     ie_cause             = 22,    
00083     ie_iaxUnknown        = 23,    
00084     ie_msgCount          = 24,    
00085     ie_autoAnswer        = 25,    
00086     ie_musicOnHold       = 26,    
00087     ie_transferId        = 27,    
00088     ie_rdnis             = 28,    
00089     ie_provisioning      = 29,    
00090     ie_aesProvisioning   = 30,    
00091     ie_dateTime          = 31,    
00092     ie_deviceType        = 32,    
00093     ie_serviceIdent      = 33,    
00094     ie_firmwareVer       = 34,    
00095     ie_fwBlockDesc       = 35,    
00096     ie_fwBlockData       = 36,    
00097     ie_provVer           = 37,    
00098     ie_callingPres       = 38,    
00099     ie_callingTon        = 39,    
00100     ie_callingTns        = 40,    
00101     ie_samplingRate      = 41,    
00102     ie_causeCode         = 42,    
00103     ie_encryption        = 43,    
00104     ie_encKey            = 44,    
00105     ie_codecPrefs        = 45,    
00106     ie_recJitter         = 46,    
00107     ie_recLoss           = 47,    
00108     ie_recPackets        = 48,    
00109     ie_recDelay          = 49,    
00110     ie_recDropped        = 50,    
00111     ie_recOoo            = 51     
00112   };
00113   
00116   
00118   IAX2Ie();
00119   
00121   virtual ~IAX2Ie() { };
00123   
00127   static IAX2Ie *BuildInformationElement(BYTE _typeCode, BYTE length, BYTE *srcData);     
00128   
00130   virtual PBoolean IsValid() { return validData; }
00131   
00133   virtual BYTE GetLengthOfData() { return 0; }
00134   
00136   int GetBinarySize() { return 2 + GetLengthOfData(); }
00137   
00139   void PrintOn(ostream & str) const;
00140   
00142   virtual BYTE GetKeyValue() const  { return 255; }
00143   
00145   void SetData(int &/*newData*/) { PAssertAlways("Ie class cannnot set data value"); };
00146   
00148   int ReadData() { PAssertAlways("Ie class cannot read the internal data value"); return 0; };
00149   
00152   void WriteBinary(void *data, PINDEX & writeIndex);
00153   
00156   virtual void StoreDataIn(IAX2IeData &/*res*/) { PTRACE(0, "UNIMPLEMENTED FUNCTION"); }     
00158   
00159  protected:
00161   virtual void WriteBinary(BYTE * /*data*/) { PTRACE(0, "UNIMPLEMENTED FUNCTION"); }
00162   
00165   PBoolean   validData;
00166 };
00167 
00169 
00170 class IAX2IeInvalidElement : public IAX2Ie
00171 {
00172   PCLASSINFO(IAX2IeInvalidElement, IAX2Ie);
00173  public:
00174   IAX2IeInvalidElement() : IAX2Ie() {};
00175   
00177   virtual BYTE GetlengthOfData() { return 0; }
00178   
00180   void PrintOn(ostream & str) const
00181     { str << "Invlalid Information Element" << endl; }
00182  protected:
00185   virtual void WriteBinary(BYTE * /*data*/) {  }
00186 };
00188 
00189 class IAX2IeNone : public IAX2Ie
00190 {
00191   PCLASSINFO(IAX2IeNone, IAX2Ie);
00194   
00198   IAX2IeNone(BYTE length, BYTE *srcData);     
00199   
00201   IAX2IeNone() : IAX2Ie() {}
00203   
00207   virtual BYTE GetLengthOfData() { return 0; }
00208   
00210   BYTE GetValue() { return 0; }
00211   
00213   void PrintOn(ostream & str) const;
00214   
00216   void SetData(void * /*newData*/) { PAssertAlways("IeNone cannot set data"); }
00217   
00219   int ReadData() { PAssertAlways("IeNone cannot read the internal data value"); return 0; }
00220   
00222  protected:
00225   virtual void WriteBinary(BYTE * /*data*/) {  }
00226 };
00227 
00229 
00230 class IAX2IeByte : public IAX2Ie
00231 {
00232   PCLASSINFO(IAX2IeByte, IAX2Ie);
00235   
00239   IAX2IeByte(BYTE length, BYTE *srcData);     
00240   
00242   IAX2IeByte(BYTE newValue) : IAX2Ie() { SetData(newValue); }
00243   
00245   IAX2IeByte() : IAX2Ie() { }
00247   
00251   virtual BYTE GetLengthOfData() { return sizeof(dataValue); }
00252   
00254   void PrintOn(ostream & str) const;
00255   
00257   void SetData(BYTE newData) { dataValue = newData; validData = PTrue; }
00258   
00260   BYTE ReadData() { return dataValue; }
00261   
00263  protected:
00265   virtual void WriteBinary(BYTE *data) { data[0] = dataValue; }
00266   
00268   BYTE dataValue;
00269 };
00270 
00272 
00273 class IAX2IeChar : public IAX2Ie
00274 {
00275   PCLASSINFO(IAX2IeChar, IAX2Ie);
00278   
00282   IAX2IeChar(BYTE length, BYTE *srcData);     
00283   
00285   IAX2IeChar(char newValue) : IAX2Ie() { SetData(newValue); }
00286   
00288   IAX2IeChar() : IAX2Ie() { }
00290   
00294   virtual BYTE GetLengthOfData() { return sizeof(dataValue); }
00295   
00297   void PrintOn(ostream & str) const;
00298   
00300   void SetData(char newData) { dataValue = newData; validData = PTrue; }
00301   
00303   char ReadData() { return dataValue; }
00304   
00306  protected:
00308   virtual void WriteBinary(BYTE *data) { data[0] = dataValue; }
00309   
00311   char dataValue;
00312 };
00313 
00315 
00316 class IAX2IeShort : public IAX2Ie
00317 {
00318   PCLASSINFO(IAX2IeShort, IAX2Ie);
00321   
00325   IAX2IeShort(BYTE length, BYTE *srcData);     
00326   
00328   IAX2IeShort(short newValue) : IAX2Ie() { SetData(newValue); }
00329   
00331   IAX2IeShort() : IAX2Ie() { }
00333   
00337   virtual BYTE GetLengthOfData() { return sizeof(dataValue); }
00338   
00340   void PrintOn(ostream & str) const;
00341   
00343   void SetData(short newData) { dataValue = newData; validData = PTrue; }
00344   
00346   short ReadData() { return dataValue; }  
00348  protected:
00350   virtual void WriteBinary(BYTE *data);
00351   
00353   short dataValue;
00354 };
00356 
00357 class IAX2IeInt : public IAX2Ie
00358 {
00359   PCLASSINFO(IAX2IeInt, IAX2Ie);
00362   
00366   IAX2IeInt(BYTE length, BYTE *srcData);     
00367   
00369   IAX2IeInt(int  newValue) : IAX2Ie() { SetData(newValue); }
00370   
00372   IAX2IeInt() : IAX2Ie() { }
00374   
00378   virtual BYTE GetLengthOfData() { return sizeof(dataValue); }
00379   
00381   void PrintOn(ostream & str) const;
00382   
00384   void SetData(int newData) { dataValue = newData; validData = PTrue; }
00385   
00387   int ReadData() { return dataValue; }
00388   
00390  protected:
00392   virtual void WriteBinary(BYTE *data);
00393   
00395   int dataValue;
00396 };
00398 
00399 class IAX2IeUShort : public IAX2Ie
00400 {
00401   PCLASSINFO(IAX2IeUShort, IAX2Ie);
00404   
00408   IAX2IeUShort(BYTE length, BYTE *srcData);     
00409   
00411   IAX2IeUShort(unsigned short newValue) : IAX2Ie() { SetData(newValue); }
00412   
00414   IAX2IeUShort() : IAX2Ie() {}
00416   
00420   virtual BYTE GetLengthOfData() { return sizeof(dataValue); }
00421   
00423   void PrintOn(ostream & str) const;
00424   
00426   void SetData(unsigned short newData) { dataValue = newData; validData = PTrue; }
00427   
00429   unsigned short ReadData() { return dataValue; }         
00431  protected:
00433   virtual void WriteBinary(BYTE *data);
00434   
00436   unsigned short dataValue;
00437 };
00439 
00440 class IAX2IeUInt : public IAX2Ie
00441 {
00442   PCLASSINFO(IAX2IeUInt, IAX2Ie);
00445   
00449   IAX2IeUInt(BYTE length, BYTE *srcData);     
00450   
00452   IAX2IeUInt() : IAX2Ie() {}
00453   
00455   IAX2IeUInt(unsigned int newValue) { SetData(newValue); }
00457   
00461   virtual BYTE GetLengthOfData() { return sizeof(dataValue); }
00462   
00464   void PrintOn(ostream & str) const;
00465   
00467   void SetData(unsigned int &newData) { dataValue = newData; validData = PTrue; }
00468   
00470   unsigned int ReadData() { return dataValue; }          
00472   
00473  protected:
00475   virtual void WriteBinary(BYTE *data);
00476   
00478   unsigned int dataValue;
00479 };
00480 
00482 
00483 class IAX2IeString : public IAX2Ie
00484 {
00485   PCLASSINFO(IAX2IeString, IAX2Ie);
00488   
00489  public:
00493   IAX2IeString(BYTE length, BYTE *srcData);     
00494   
00496   IAX2IeString(const PString & newValue) : IAX2Ie() { SetData(newValue); }
00497   
00499   IAX2IeString(const char * newValue) : IAX2Ie() { SetData(newValue); }
00500   
00502   IAX2IeString() : IAX2Ie() {}
00504   
00508   virtual BYTE GetLengthOfData();
00509   
00511   void PrintOn(ostream & str) const;
00512   
00514   void SetData(const PString & newData);
00515   
00517   void SetData(const char * newData);
00518   
00520   PString ReadData() { return dataValue; }          
00522   
00523  protected:
00525   virtual void WriteBinary(BYTE *data);
00526   
00528   PString dataValue;
00529 };
00531 
00532 class IAX2IeDateAndTime : public IAX2Ie
00533 {
00534   PCLASSINFO(IAX2IeDateAndTime, IAX2Ie);
00537   
00538  public:
00542   IAX2IeDateAndTime(BYTE length, BYTE *srcData);     
00543   
00545   IAX2IeDateAndTime(const PTime & newValue) : IAX2Ie() { SetData(newValue); }
00546   
00548   IAX2IeDateAndTime() : IAX2Ie() {}
00550   
00554   void PrintOn(ostream & str) const;
00555   
00557   virtual BYTE GetLengthOfData() { return 4; }
00558   
00560   void SetData(const PTime & newData) { dataValue = newData; validData = PTrue; }
00561   
00563   PTime ReadData() { return dataValue; }
00565  protected:
00567   virtual void WriteBinary(BYTE *data);
00568   
00570   PTime dataValue;
00571 };
00573 
00574 class IAX2IeBlockOfData : public IAX2Ie
00575 {
00576   PCLASSINFO(IAX2IeBlockOfData, IAX2Ie);
00579   
00580  public:
00584   IAX2IeBlockOfData(BYTE length, BYTE *srcData);     
00585   
00587   IAX2IeBlockOfData(const PBYTEArray & newData) : IAX2Ie() { SetData(newData); }
00588   
00590   IAX2IeBlockOfData() : IAX2Ie() {}
00592   
00596   void PrintOn(ostream & str) const;
00597   
00599   virtual BYTE GetLengthOfData() { return (BYTE)dataValue.GetSize(); }
00600   
00602   void SetData(const PBYTEArray & newData) { dataValue = newData; validData = PTrue; }
00603   
00605   PBYTEArray ReadData() { return dataValue; }
00606   
00608  protected:
00610   virtual void WriteBinary(BYTE *data);
00611   
00613   PBYTEArray dataValue;
00614 };
00616 
00617 class IAX2IeSockaddrIn : public IAX2Ie
00618 {
00619   PCLASSINFO(IAX2IeSockaddrIn, IAX2Ie);
00622   
00623  public:
00627   IAX2IeSockaddrIn(BYTE length, BYTE *srcData);     
00628   
00630   IAX2IeSockaddrIn(const PIPSocket::Address & addr, PINDEX port) : IAX2Ie() { SetData(addr, port); }
00631   
00633   IAX2IeSockaddrIn() : IAX2Ie() {}
00634   
00636   ~IAX2IeSockaddrIn() { } ;
00638   
00642   void PrintOn(ostream & str) const;
00643   
00645   virtual BYTE GetLengthOfData() { return sizeof(struct sockaddr_in); }
00646   
00647   
00649   void SetData(const PIPSocket::Address & newAddr, PINDEX newPort) 
00650     { dataValue = newAddr; portNumber = newPort; validData = PTrue; }
00651   
00653   PIPSocket::Address ReadData() { return dataValue; }
00654   
00656  protected:
00658   virtual void WriteBinary(BYTE *data);
00659   
00661   PIPSocket::Address dataValue;
00662   
00664   PINDEX               portNumber;
00665 };
00666 
00668 
00669 class IAX2IeCalledNumber : public IAX2IeString
00670 {
00671   PCLASSINFO(IAX2IeCalledNumber, IAX2IeString);
00672  public:
00676   IAX2IeCalledNumber(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) {};
00677   
00679   IAX2IeCalledNumber(const PString & newValue) { SetData(newValue); }
00680   
00682   void PrintOn(ostream & str) const;
00683   
00685   virtual BYTE GetKeyValue() const  { return ie_calledNumber; }
00686   
00689   virtual void StoreDataIn(IAX2IeData &res) { res.calledNumber = dataValue; }
00690  protected:
00691 };
00693 
00694 class IAX2IeCallingNumber : public IAX2IeString
00695 {
00696   PCLASSINFO(IAX2IeCallingNumber, IAX2IeString);
00697  public:
00701   IAX2IeCallingNumber(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00702   
00704   IAX2IeCallingNumber(const PString & newValue)  { SetData(newValue); } 
00705   
00707   void PrintOn(ostream & str) const;
00708   
00710   virtual BYTE GetKeyValue() const  { return ie_callingNumber; }
00711   
00714   virtual void StoreDataIn(IAX2IeData &res) { res.callingNumber = dataValue; }     
00715  protected:
00716 };
00717 
00719 
00720 class IAX2IeCallingAni : public IAX2IeString
00721 {
00722   PCLASSINFO(IAX2IeCallingAni, IAX2IeString);
00723  public:
00727   IAX2IeCallingAni(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00728   
00730   IAX2IeCallingAni(const PString & newValue) { SetData(newValue); }
00731   
00733   void PrintOn(ostream & str) const;
00734   
00736   virtual BYTE GetKeyValue() const  { return ie_callingAni; }
00737   
00740   virtual void StoreDataIn(IAX2IeData &res) { res.callingAni = dataValue; }     
00741  protected:
00742 };
00743 
00745 
00746 class IAX2IeCallingName : public IAX2IeString
00747 {
00748   PCLASSINFO(IAX2IeCallingName, IAX2IeString);
00749  public:
00753   IAX2IeCallingName(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00754   
00756   IAX2IeCallingName(const PString & newValue) { SetData(newValue); }
00757   
00759   void PrintOn(ostream & str) const;
00760   
00762   virtual BYTE GetKeyValue() const  { return ie_callingName; }
00763   
00766   virtual void StoreDataIn(IAX2IeData &res) { res.callingName = dataValue; }     
00767  protected:
00768 };
00769 
00771 
00772 class IAX2IeCalledContext : public IAX2IeString
00773 {
00774   PCLASSINFO(IAX2IeCalledContext, IAX2IeString);
00775  public:
00779   IAX2IeCalledContext(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00780   
00782   IAX2IeCalledContext(const PString & newValue) { SetData(newValue); }
00783   
00785   void PrintOn(ostream & str) const;
00786   
00788   virtual BYTE GetKeyValue() const  { return ie_calledContext; }
00789   
00792   virtual void StoreDataIn(IAX2IeData &res) { res.calledContext = dataValue; }     
00793  protected:
00794 };
00795 
00797 
00798 class IAX2IeUserName : public IAX2IeString
00799 {
00800   PCLASSINFO(IAX2IeUserName, IAX2IeString);
00801  public:
00805   IAX2IeUserName(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00806   
00808   IAX2IeUserName(const PString & newValue)  { SetData(newValue); }
00809   
00811   void PrintOn(ostream & str) const;
00812   
00814   virtual BYTE GetKeyValue() const  { return ie_userName; }
00815   
00818   virtual void StoreDataIn(IAX2IeData &res) { res.userName = dataValue; }     
00819  protected:
00820 };
00821 
00823 
00824 class IAX2IePassword : public IAX2IeString
00825 {
00826   PCLASSINFO(IAX2IePassword, IAX2IeString);
00827  public:
00831   IAX2IePassword(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00832   
00834   IAX2IePassword(const PString & newValue) { SetData(newValue); }
00835   
00837   void PrintOn(ostream & str) const;
00838   
00840   virtual BYTE GetKeyValue() const  { return ie_password; }
00841   
00844   virtual void StoreDataIn(IAX2IeData &res) { res.password = dataValue; }     
00845  protected:
00846 };
00847 
00849 
00850 class IAX2IeCapability : public IAX2IeUInt
00851 {
00852   PCLASSINFO(IAX2IeCapability, IAX2IeUInt);
00853  public:
00857   IAX2IeCapability(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
00858   
00860   IAX2IeCapability(unsigned int newValue) : IAX2IeUInt(newValue) { }
00861   
00863   void PrintOn(ostream & str) const;
00864   
00866   virtual BYTE GetKeyValue() const  { return ie_capability; }
00867   
00870   virtual void StoreDataIn(IAX2IeData &res) { res.capability = dataValue; }     
00871  protected:
00872 };
00873 
00875 
00876 class IAX2IeFormat : public IAX2IeUInt
00877 {
00878   PCLASSINFO(IAX2IeFormat, IAX2IeUInt);
00879  public:
00883   IAX2IeFormat(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
00884   
00886   IAX2IeFormat(unsigned int newValue) : IAX2IeUInt(newValue) { }
00887   
00889   void PrintOn(ostream & str) const;
00890   
00892   virtual BYTE GetKeyValue() const  { return ie_format; }
00893   
00896   virtual void StoreDataIn(IAX2IeData &res) { res.format = dataValue; }     
00897  protected:
00898 };
00899 
00901 
00902 class IAX2IeLanguage : public IAX2IeString
00903 {
00904   PCLASSINFO(IAX2IeLanguage, IAX2IeString);
00905  public:
00909   IAX2IeLanguage(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00910   
00912   IAX2IeLanguage(const PString & newValue) { SetData(newValue); }
00913   
00915   void PrintOn(ostream & str) const;
00916   
00918   virtual BYTE GetKeyValue() const  { return ie_language; }
00919   
00922   virtual void StoreDataIn(IAX2IeData &res) { res.language = dataValue; }     
00923  protected:
00924 };
00925 
00927 
00928 class IAX2IeVersion : public IAX2IeShort
00929 {
00930   PCLASSINFO(IAX2IeVersion, IAX2IeShort);
00931  public:
00935   IAX2IeVersion(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
00936   
00938   IAX2IeVersion() { dataValue = 2; validData = PTrue; }
00939   
00941   void PrintOn(ostream & str) const;
00942   
00944   virtual BYTE GetKeyValue() const  { return ie_version; }
00945   
00948   virtual void StoreDataIn(IAX2IeData &res) { res.version = dataValue; }     
00949  protected:
00950 };
00951 
00953 
00954 class IAX2IeAdsicpe : public IAX2IeShort
00955 {
00956   PCLASSINFO(IAX2IeAdsicpe, IAX2IeShort);
00957  public:
00961   IAX2IeAdsicpe(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
00962   
00964   void PrintOn(ostream & str) const;
00965   
00967   virtual BYTE GetKeyValue() const  { return ie_adsicpe; }
00968   
00971   virtual void StoreDataIn(IAX2IeData &res) { res.adsicpe = dataValue; }     
00972  protected:
00973 };
00974 
00976 
00977 class IAX2IeDnid : public IAX2IeString
00978 {
00979   PCLASSINFO(IAX2IeDnid, IAX2IeString);
00980  public:
00984   IAX2IeDnid(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
00985   
00987   IAX2IeDnid(const PString & newValue)  { SetData(newValue); }
00988   
00990   void PrintOn(ostream & str) const;
00991   
00993   virtual BYTE GetKeyValue() const  { return ie_dnid; }
00994   
00997   virtual void StoreDataIn(IAX2IeData &res) { res.dnid = dataValue; }     
00998  protected:
00999 };
01000 
01002 
01003 class IAX2IeAuthMethods : public IAX2IeShort
01004 {
01005   PCLASSINFO(IAX2IeAuthMethods, IAX2IeShort);
01006  public:
01010   IAX2IeAuthMethods(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
01011   
01013   IAX2IeAuthMethods(short newValue) { SetData(newValue); }
01014   
01016   void PrintOn(ostream & str) const;
01017   
01019   virtual BYTE GetKeyValue() const  { return ie_authMethods; }
01020   
01023   virtual void StoreDataIn(IAX2IeData &res) { res.authMethods = dataValue; }     
01024   
01026   static PBoolean IsRsaAuthentication(short testValue) { return InternalIsRsa(testValue); }
01027   
01029   static PBoolean IsMd5Authentication(short testValue) { return InternalIsMd5(testValue); }
01030   
01032   static PBoolean IsPlainTextAuthentication(short testValue) { return InternalIsPlainText(testValue); }     
01033   
01035   PBoolean IsRsaAuthentication() { if (IsValid()) return InternalIsRsa(dataValue); else return PFalse; }
01036   
01038   PBoolean IsMd5Authentication() { if (IsValid()) return InternalIsMd5(dataValue); else return PFalse; }
01039   
01041   PBoolean IsPlainTextAuthentication() { if (IsValid()) return InternalIsPlainText(dataValue); else return PFalse; }
01042   
01043  protected:
01044   
01046   static PBoolean InternalIsRsa(short testValue) { return testValue  & 0x04; }
01047   
01049   static PBoolean InternalIsMd5(short testValue) { return testValue  & 0x02; }
01050   
01052   static PBoolean InternalIsPlainText(short testValue) { return testValue  & 0x01; }
01053 };
01054 
01056 
01057 class IAX2IeChallenge : public IAX2IeString
01058 {
01059   PCLASSINFO(IAX2IeChallenge, IAX2IeString);
01060  public:
01064   IAX2IeChallenge(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01065   
01067   IAX2IeChallenge(const PString & newValue) { SetData(newValue); }
01068   
01070   void PrintOn(ostream & str) const;
01071   
01073   virtual BYTE GetKeyValue() const  { return ie_challenge; }
01074   
01077   virtual void StoreDataIn(IAX2IeData &res) { res.challenge = dataValue; }     
01078  protected:
01079 };
01080 
01082 
01083 class IAX2IeMd5Result : public IAX2IeString
01084 {
01085   PCLASSINFO(IAX2IeMd5Result, IAX2IeString);
01086  public:
01090   IAX2IeMd5Result(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01091   
01093   IAX2IeMd5Result(const PString & newValue) { SetData(newValue); }
01094   
01096   IAX2IeMd5Result(const PString & challenge, const PString & password);
01097   
01099   IAX2IeMd5Result(IAX2Encryption & encryption);
01100   
01102   void InitializeChallengePassword(const PString & newChallenge, const PString & newPassword);
01103 
01105   void PrintOn(ostream & str) const;
01106   
01108   virtual BYTE GetKeyValue() const  { return ie_md5Result; }
01109   
01112   virtual void StoreDataIn(IAX2IeData &res) { res.md5Result = dataValue; }     
01113 
01116   PBYTEArray & GetDataBlock() { return dataBlock; }
01117 
01118  protected:
01119 
01121   PBYTEArray dataBlock;
01122 };
01123 
01125 
01126 class IAX2IeRsaResult : public IAX2IeString
01127 {
01128   PCLASSINFO(IAX2IeRsaResult, IAX2IeString);
01129  public:
01133   IAX2IeRsaResult(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01134   
01136   IAX2IeRsaResult(const PString & newValue) { SetData(newValue); }
01137   
01139   void PrintOn(ostream & str) const;
01140   
01142   virtual BYTE GetKeyValue() const  { return ie_rsaResult; }
01143   
01146   virtual void StoreDataIn(IAX2IeData &res) { res.rsaResult = dataValue; }
01147  protected:
01148 };
01149 
01151 
01152 class IAX2IeApparentAddr : public IAX2IeSockaddrIn
01153 {
01154   PCLASSINFO(IAX2IeApparentAddr, IAX2IeSockaddrIn);
01155  public:
01159   IAX2IeApparentAddr(BYTE length, BYTE *srcData) : IAX2IeSockaddrIn(length, srcData) { };
01160   
01162   ~IAX2IeApparentAddr() { };
01163   
01165   void PrintOn(ostream & str) const;
01166   
01168   virtual BYTE GetKeyValue() const  { return ie_apparentAddr; }
01169   
01172   virtual void StoreDataIn(IAX2IeData &res) { res.apparentAddr = dataValue; }     
01173  protected:
01174 };
01175 
01177 
01178 class IAX2IeRefresh : public IAX2IeShort
01179 {
01180   PCLASSINFO(IAX2IeRefresh, IAX2IeShort);
01181  public:
01185   IAX2IeRefresh(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
01186   
01188   IAX2IeRefresh(short refreshTime) : IAX2IeShort(refreshTime) { };
01189   
01191   void PrintOn(ostream & str) const;
01192   
01194   virtual BYTE GetKeyValue() const  { return ie_refresh; }
01195   
01198   virtual void StoreDataIn(IAX2IeData &res) { res.refresh = dataValue; }     
01199  protected:
01200 };
01201 
01203 
01204 class IAX2IeDpStatus : public IAX2IeShort
01205 {
01206   PCLASSINFO(IAX2IeDpStatus, IAX2IeShort);
01207  public:
01211   IAX2IeDpStatus(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
01212   
01214   void PrintOn(ostream & str) const;
01215   
01217   virtual BYTE GetKeyValue() const  { return ie_dpStatus; }
01218   
01221   virtual void StoreDataIn(IAX2IeData &res) { res.dpStatus = dataValue; }     
01222  protected:
01223 };
01224 
01226 
01227 class IAX2IeCallNo : public IAX2IeShort
01228 {
01229   PCLASSINFO(IAX2IeCallNo, IAX2IeShort);
01230  public:
01234   IAX2IeCallNo(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
01235   
01237   void PrintOn(ostream & str) const;
01238   
01240   virtual BYTE GetKeyValue() const  { return ie_callNo; }
01241   
01244   virtual void StoreDataIn(IAX2IeData &res) { res.callNo = dataValue; }     
01245  protected:
01246 };
01247 
01249 
01250 class IAX2IeCause : public IAX2IeString
01251 {
01252   PCLASSINFO(IAX2IeCause, IAX2IeString);
01253  public:
01257   IAX2IeCause(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01258   
01260   IAX2IeCause(const PString & newValue) : IAX2IeString(newValue) { }
01261   
01263   IAX2IeCause(const char *newValue) : IAX2IeString(newValue) { }
01264   
01266   void PrintOn(ostream & str) const;
01267   
01269   virtual BYTE GetKeyValue() const  { return ie_cause; }
01270   
01273   virtual void StoreDataIn(IAX2IeData &res) { res.cause = dataValue; }     
01274  protected:
01275 };
01276 
01278 
01279 class IAX2IeIaxUnknown : public IAX2IeByte
01280 {
01281   PCLASSINFO(IAX2IeIaxUnknown, IAX2IeByte);
01282  public:
01286   IAX2IeIaxUnknown(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
01287   
01289   IAX2IeIaxUnknown(BYTE newValue) : IAX2IeByte(newValue) { }
01290   
01292   void PrintOn(ostream & str) const;
01293   
01295   virtual BYTE GetKeyValue() const  { return ie_iaxUnknown; }
01296   
01299   virtual void StoreDataIn(IAX2IeData &res) { res.iaxUnknown = dataValue; }     
01300  protected:
01301 };
01302 
01304 
01305 class IAX2IeMsgCount : public IAX2IeShort
01306 {
01307   PCLASSINFO(IAX2IeMsgCount, IAX2IeShort);
01308  public:
01312   IAX2IeMsgCount(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
01313   
01315   void PrintOn(ostream & str) const;
01316   
01318   virtual BYTE GetKeyValue() const  { return ie_msgCount; }
01319   
01322   virtual void StoreDataIn(IAX2IeData &res) { res.msgCount = dataValue; }     
01323  protected:
01324 };
01325 
01327 
01328 class IAX2IeAutoAnswer : public IAX2IeNone
01329 {
01330   PCLASSINFO(IAX2IeAutoAnswer, IAX2IeNone);
01331  public:
01335   IAX2IeAutoAnswer(BYTE length, BYTE *srcData) : IAX2IeNone(length, srcData) { };
01336   
01338   void PrintOn(ostream & str) const;
01339   
01341   virtual BYTE GetKeyValue() const  { return ie_autoAnswer; }
01342   
01345   virtual void StoreDataIn(IAX2IeData &res) { res.autoAnswer = PTrue;; }     
01346  protected:
01347 };
01348 
01350 
01351 class IAX2IeMusicOnHold : public IAX2IeNone
01352 {
01353   PCLASSINFO(IAX2IeMusicOnHold, IAX2IeNone);
01354  public:
01358   IAX2IeMusicOnHold(BYTE length, BYTE *srcData) : IAX2IeNone(length, srcData) { };
01359   
01361   IAX2IeMusicOnHold() : IAX2IeNone() { };
01362   
01364   void PrintOn(ostream & str) const;
01365   
01367   virtual BYTE GetKeyValue() const  { return ie_musicOnHold; }
01368   
01371   virtual void StoreDataIn(IAX2IeData &res) { res.musicOnHold = PTrue; }     
01372  protected:
01373 };
01374 
01376 
01377 class IAX2IeTransferId : public IAX2IeInt
01378 {
01379   PCLASSINFO(IAX2IeTransferId, IAX2IeInt);
01380  public:
01384   IAX2IeTransferId(BYTE length, BYTE *srcData) : IAX2IeInt(length, srcData) { };
01385   
01387   void PrintOn(ostream & str) const;
01388   
01390   virtual BYTE GetKeyValue() const  { return ie_transferId; }
01391   
01394   virtual void StoreDataIn(IAX2IeData &res) { res.transferId = dataValue; }     
01395  protected:
01396 };
01397 
01399 
01400 class IAX2IeRdnis : public IAX2IeString
01401 {
01402   PCLASSINFO(IAX2IeRdnis, IAX2IeString);
01403  public:
01407   IAX2IeRdnis(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01408   
01410   void PrintOn(ostream & str) const;
01411   
01413   virtual BYTE GetKeyValue() const  { return ie_rdnis; }
01414   
01417   virtual void StoreDataIn(IAX2IeData &res) { res.rdnis = dataValue; }     
01418  protected:
01419 };
01420 
01422 
01423 class IAX2IeProvisioning : public IAX2IeBlockOfData
01424 {
01425   PCLASSINFO(IAX2IeProvisioning, IAX2IeBlockOfData);
01426  public:
01430   IAX2IeProvisioning(BYTE length, BYTE *srcData) : IAX2IeBlockOfData   (length, srcData) { };
01431   
01433   void PrintOn(ostream & str) const;
01434   
01436   virtual BYTE GetKeyValue() const  { return ie_provisioning; }
01437   
01440   virtual void StoreDataIn(IAX2IeData &/*res*/) {  }     
01441  protected:
01442 };
01443 
01445 
01446 class IAX2IeAesProvisioning : public IAX2IeNone
01447 {
01448   PCLASSINFO(IAX2IeAesProvisioning, IAX2IeNone);
01449  public:
01453   IAX2IeAesProvisioning(BYTE length, BYTE *srcData) : IAX2IeNone(length, srcData) { };
01454   
01456   void PrintOn(ostream & str) const;
01457   
01459   virtual BYTE GetKeyValue() const  { return ie_aesProvisioning; }
01460   
01463   virtual void StoreDataIn(IAX2IeData &/*res*/) {  }     
01464  protected:
01465 };
01466 
01468 
01469 class IAX2IeDateTime : public IAX2IeDateAndTime
01470 {
01471   PCLASSINFO(IAX2IeDateTime, IAX2IeDateAndTime);
01472  public:
01476   IAX2IeDateTime(BYTE length, BYTE *srcData) : IAX2IeDateAndTime(length, srcData) { };
01477   
01479   void PrintOn(ostream & str) const;
01480   
01482   virtual BYTE GetKeyValue() const  { return ie_dateTime; }
01483   
01486   virtual void StoreDataIn(IAX2IeData &res) { res.dateTime = dataValue; }     
01487  protected:
01488 };
01489 
01491 
01492 class IAX2IeDeviceType : public IAX2IeString
01493 {
01494   PCLASSINFO(IAX2IeDeviceType, IAX2IeString);
01495  public:
01499   IAX2IeDeviceType(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01500   
01502   void PrintOn(ostream & str) const;
01503   
01505   virtual BYTE GetKeyValue() const  { return ie_deviceType; }
01506   
01509   virtual void StoreDataIn(IAX2IeData &res) { res.deviceType = dataValue; }     
01510  protected:
01511 };
01512 
01514 
01515 class IAX2IeServiceIdent : public IAX2IeString
01516 {
01517   PCLASSINFO(IAX2IeServiceIdent, IAX2IeString);
01518  public:
01522   IAX2IeServiceIdent(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01523   
01525   void PrintOn(ostream & str) const;
01526   
01528   virtual BYTE GetKeyValue() const  { return ie_serviceIdent; }
01529   
01532   virtual void StoreDataIn(IAX2IeData &res) { res.serviceIdent = dataValue; }     
01533  protected:
01534 };
01535 
01537 
01538 class IAX2IeFirmwareVer : public IAX2IeShort
01539 {
01540   PCLASSINFO(IAX2IeFirmwareVer, IAX2IeShort);
01541  public:
01545   IAX2IeFirmwareVer(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
01546   
01548   void PrintOn(ostream & str) const;
01549   
01551   virtual BYTE GetKeyValue() const  { return ie_firmwareVer; }
01552   
01555   virtual void StoreDataIn(IAX2IeData &res) { res.firmwareVer = dataValue; }     
01556  protected:
01557 };
01558 
01560 
01561 class IAX2IeFwBlockDesc : public IAX2IeUInt
01562 {
01563   PCLASSINFO(IAX2IeFwBlockDesc, IAX2IeUInt);
01564  public:
01568   IAX2IeFwBlockDesc(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01569   
01571   IAX2IeFwBlockDesc(unsigned int newValue) : IAX2IeUInt(newValue) { }
01572   
01574   void PrintOn(ostream & str) const;
01575   
01577   virtual BYTE GetKeyValue() const  { return ie_fwBlockDesc; }
01578   
01581   virtual void StoreDataIn(IAX2IeData &res) { res.fwBlockDesc = dataValue; }     
01582  protected:
01583 };
01584 
01586 
01587 class IAX2IeFwBlockData : public IAX2IeBlockOfData
01588 {
01589   PCLASSINFO(IAX2IeFwBlockData, IAX2IeBlockOfData);
01590  public:
01594   IAX2IeFwBlockData(BYTE length, BYTE *srcData) : IAX2IeBlockOfData(length, srcData) { };
01595   
01597   void PrintOn(ostream & str) const;
01598   
01600   virtual BYTE GetKeyValue() const  { return ie_fwBlockData; }
01601   
01604   virtual void StoreDataIn(IAX2IeData &res) { res.fwBlockData = dataValue; }     
01605  protected:
01606 };
01607 
01609 
01610 class IAX2IeProvVer : public IAX2IeUInt
01611 {
01612   PCLASSINFO(IAX2IeProvVer, IAX2IeUInt);
01613  public:
01617   IAX2IeProvVer(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01618   
01620   IAX2IeProvVer(unsigned int newValue) : IAX2IeUInt(newValue) { }
01621   
01623   void PrintOn(ostream & str) const;
01624   
01626   virtual BYTE GetKeyValue() const  { return ie_provVer; }
01627   
01630   virtual void StoreDataIn(IAX2IeData &res) { res.provVer = dataValue; }     
01631  protected:
01632 };
01633 
01635 
01636 class IAX2IeCallingPres : public IAX2IeByte
01637 {
01638   PCLASSINFO(IAX2IeCallingPres, IAX2IeByte);
01639  public:
01643   IAX2IeCallingPres(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
01644   
01646   void PrintOn(ostream & str) const;
01647   
01649   virtual BYTE GetKeyValue() const  { return ie_callingPres; }
01650   
01653   virtual void StoreDataIn(IAX2IeData &res) { res.callingPres = dataValue; }     
01654  protected:
01655 };
01656 
01658 
01659 class IAX2IeCallingTon : public IAX2IeByte
01660 {
01661   PCLASSINFO(IAX2IeCallingTon, IAX2IeByte);
01662  public:
01666   IAX2IeCallingTon(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
01667   
01669   void PrintOn(ostream & str) const;
01670   
01672   virtual BYTE GetKeyValue() const  { return ie_callingTon; }
01673   
01676   virtual void StoreDataIn(IAX2IeData &res) { res.callingTon = dataValue; }     
01677  protected:
01678 };
01679 
01681 
01682 class IAX2IeCallingTns : public IAX2IeUShort
01683 {
01684   PCLASSINFO(IAX2IeCallingTns, IAX2IeUShort);
01685  public:
01689   IAX2IeCallingTns(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
01690   
01692   void PrintOn(ostream & str) const;
01693   
01695   virtual BYTE GetKeyValue() const  { return ie_callingTns; }
01696   
01699   virtual void StoreDataIn(IAX2IeData &res) { res.callingTns = dataValue; }     
01700  protected:
01701 };
01702 
01704 
01705 class IAX2IeSamplingRate : public IAX2IeUShort
01706 {
01707   PCLASSINFO(IAX2IeSamplingRate, IAX2IeUShort);
01708  public:
01712   IAX2IeSamplingRate(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
01713   
01715   void PrintOn(ostream & str) const;
01716   
01718   virtual BYTE GetKeyValue() const  { return ie_samplingRate; }
01719   
01722   virtual void StoreDataIn(IAX2IeData &res) { res.samplingRate = dataValue; }     
01723  protected:
01724 };
01725 
01727 
01728 class IAX2IeEncryption : public IAX2IeUShort
01729 {
01730   PCLASSINFO(IAX2IeEncryption, IAX2IeUShort);
01731  public:
01733   enum IAX2IeEncryptionMethod {
01734     encryptAes128 = 1    
01735   };
01736 
01738   IAX2IeEncryption(IAX2IeEncryptionMethod method = encryptAes128);
01739 
01743   IAX2IeEncryption(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
01744   
01746   void PrintOn(ostream & str) const;
01747   
01749   virtual BYTE GetKeyValue() const  { return ie_encryption; }
01750   
01753   virtual void StoreDataIn(IAX2IeData &res) { res.encryptionMethods = dataValue; }
01754  protected:
01755 };
01756 
01758 
01759 class IAX2IeEncKey : public IAX2IeString
01760 {
01761   PCLASSINFO(IAX2IeEncKey, IAX2IeString);
01762  public:
01766   IAX2IeEncKey(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
01767   
01769   void PrintOn(ostream & str) const;
01770   
01772   virtual BYTE GetKeyValue() const  { return ie_encKey; }
01773   
01776   virtual void StoreDataIn(IAX2IeData &res) { res.encKey = dataValue; }     
01777  protected:
01778 };
01779 
01781 
01782 class IAX2IeCodecPrefs : public IAX2IeByte
01783 {
01784   PCLASSINFO(IAX2IeCodecPrefs, IAX2IeByte);
01785  public:
01789   IAX2IeCodecPrefs(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
01790   
01792   void PrintOn(ostream & str) const;
01793   
01795   virtual BYTE GetKeyValue() const  { return ie_codecPrefs; }
01796   
01799   virtual void StoreDataIn(IAX2IeData &res) { res.codecPrefs = dataValue; }     
01800  protected:
01801 };
01802 
01804 
01805 class IAX2IeReceivedJitter : public IAX2IeUInt
01806 {
01807   PCLASSINFO(IAX2IeReceivedJitter, IAX2IeUInt);
01808  public:
01812   IAX2IeReceivedJitter(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01813   
01815   void PrintOn(ostream & str) const;
01816   
01818   virtual BYTE GetKeyValue() const  { return ie_recJitter; }
01819   
01822   virtual void StoreDataIn(IAX2IeData &res) { res.receivedJitter = dataValue; }     
01823  protected:
01824 };
01825 
01827 
01828 class IAX2IeReceivedLoss : public IAX2IeUInt
01829 {
01830   PCLASSINFO(IAX2IeReceivedLoss, IAX2IeUInt);
01831  public:
01835   IAX2IeReceivedLoss(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01836   
01838   void PrintOn(ostream & str) const;
01839   
01841   virtual BYTE GetKeyValue() const  { return ie_recLoss; }
01842   
01845   virtual void StoreDataIn(IAX2IeData &res) { res.receivedLoss = dataValue; }     
01846  protected:
01847 };
01848 
01850 
01851 class IAX2IeReceivedFrames : public IAX2IeUInt
01852 {
01853   PCLASSINFO(IAX2IeReceivedFrames, IAX2IeUInt);
01854  public:
01858   IAX2IeReceivedFrames(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01859   
01861   void PrintOn(ostream & str) const;
01862   
01864   virtual BYTE GetKeyValue() const  { return ie_recPackets; }
01865   
01868   virtual void StoreDataIn(IAX2IeData &res) { res.receivedPackets = dataValue; }     
01869  protected:
01870 };
01871 
01873 
01874 class IAX2IeReceivedDelay : public IAX2IeUShort
01875 {
01876   PCLASSINFO(IAX2IeReceivedDelay, IAX2IeUShort);
01877  public:
01881   IAX2IeReceivedDelay(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
01882   
01884   void PrintOn(ostream & str) const;
01885   
01887   virtual BYTE GetKeyValue() const  { return ie_recDelay; }
01888   
01891   virtual void StoreDataIn(IAX2IeData &res) { res.receivedDelay = dataValue; }     
01892  protected:
01893 };
01894 
01896 
01897 class IAX2IeDroppedFrames : public IAX2IeUInt
01898 {
01899   PCLASSINFO(IAX2IeDroppedFrames, IAX2IeUInt);
01900  public:
01904   IAX2IeDroppedFrames(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01905   
01907   void PrintOn(ostream & str) const;
01908   
01910   virtual BYTE GetKeyValue() const  { return ie_recDropped; }
01911   
01914   virtual void StoreDataIn(IAX2IeData &res) { res.receivedDropped = dataValue; }     
01915  protected:
01916 };
01917 
01919 
01920 class IAX2IeReceivedOoo : public IAX2IeUInt
01921 {
01922   PCLASSINFO(IAX2IeReceivedOoo, IAX2IeUInt);
01923  public:
01927   IAX2IeReceivedOoo(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
01928   
01930   void PrintOn(ostream & str) const;
01931   
01933   virtual BYTE GetKeyValue() const  { return ie_recOoo; }
01934   
01937   virtual void StoreDataIn(IAX2IeData &res) { res.receivedOoo = dataValue; }     
01938  protected:
01939 };
01940 
01942 
01943 
01944 PDECLARE_LIST (IAX2IeList, IAX2Ie *)
01945 #ifdef DOC_PLUS_PLUS 
01946 
01947 class IAX2IeList : public IAX2Ie *
01948 {
01949 #endif
01950  public:
01952   ~IAX2IeList();
01953   
01957   IAX2Ie *RemoveIeAt(PINDEX i);
01958   
01962   IAX2Ie *RemoveLastIe();
01963   
01965   void Initialise() {  DisallowDeleteObjects(); }
01966   
01968   void DeleteAt(PINDEX idex);
01969   
01971   PBoolean Empty() const { return GetSize() == 0; }
01972   
01974   PBoolean IsEmpty() const { return GetSize() == 0; }
01975   
01977   void AppendIe(IAX2Ie *newMember) { Append(newMember);}
01978   
01980   int GetBinaryDataSize() const;
01981   
01983   IAX2Ie * GetIeAt(int i) const;
01984   
01985  protected:
01986   
01987 };
01988 
01989 
01990 #endif // OPAL_IAX2
01991 
01992 #endif // OPAL_IAX2_IES_H
01993 
01994 /* The comment below is magic for those who use emacs to edit this file. */
01995 /* With the comment below, the tab key does auto indent to 4 spaces.     */
01996 
01997 /*
01998  * Local Variables:
01999  * mode:c
02000  * c-file-style:linux
02001  * c-basic-offset:2
02002  * End:
02003  */

Generated on Mon Feb 23 02:01:36 2009 for OPAL by  doxygen 1.5.1