00001 /* 00002 * ============================================================================= 00003 * Name : sipeventheader.h 00004 * Part of : SIP Codec 00005 * Interface : SDK API, SIP Codec API 00006 * Description : 00007 * Version : SIP/4.0 00008 * 00009 * Copyright (c) 2004 Nokia Corporation. 00010 * This material, including documentation and any related 00011 * computer programs, is protected by copyright controlled by 00012 * Nokia Corporation. All rights are reserved. Copying, 00013 * including reproducing, storing, adapting or translating, any 00014 * or all of this material requires the prior written consent of 00015 * Nokia Corporation. This material also contains confidential 00016 * information which may not be disclosed to others without the 00017 * prior written consent of Nokia Corporation. 00018 * ============================================================================= 00019 */ 00020 00021 00022 #ifndef CSIPEVENTHEADER_H 00023 #define CSIPEVENTHEADER_H 00024 00025 // INCLUDES 00026 #include <bamdesca.h> 00027 #include <badesca.h> 00028 #include "SipParameterHeaderBase.h" 00029 #include "_sipcodecdefs.h" 00030 00031 // FORWARD DECLARATIONS 00032 class CSIPEventHeaderParams; 00033 00034 // CLASS DECLARATION 00044 class CSIPEventHeader : public CSIPParameterHeaderBase 00045 { 00046 public: // Constructors and destructor 00047 00054 IMPORT_C static CSIPEventHeader* DecodeL(const TDesC8& aValue); 00055 00061 IMPORT_C static CSIPEventHeader* NewL(const TDesC8& aEventPackage); 00062 00069 IMPORT_C static CSIPEventHeader* NewLC(const TDesC8& aEventPackage); 00070 00074 IMPORT_C ~CSIPEventHeader(); 00075 00076 00077 public: // New functions 00078 00084 IMPORT_C TBool operator==(const CSIPEventHeader& aHeader) const; 00085 00090 IMPORT_C const TDesC8& EventPackage() const; 00091 00096 IMPORT_C void SetEventPackageL(const TDesC8& aEventPackage); 00097 00102 IMPORT_C void SetEventTemplatesL(const MDesC8Array& aEventTemplates); 00103 00108 IMPORT_C const MDesC8Array& EventTemplates() const; 00109 00116 IMPORT_C static CSIPHeaderBase* 00117 InternalizeValueL(RReadStream& aReadStream); 00118 00119 00120 public: // From CSIPHeaderBase 00121 00125 IMPORT_C CSIPHeaderBase* CloneL() const; 00126 00130 IMPORT_C RStringF Name() const; 00131 00132 00133 public: // From CSIPHeaderBase, for internal use 00134 00135 TBool HasCompactName() const; 00136 RStringF CompactName() const; 00137 TPreferredPlace PreferredPlaceInMessage() const; 00138 00139 public: // New functions, for internal use 00140 00141 static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue); 00142 00143 private: // From CSIPHeaderBase 00144 00145 void ExternalizeValueL(RWriteStream& aWriteStream) const; 00146 00147 private: // From CSIPParameterHeaderBase 00148 00149 HBufC8* ToTextMandatoryPartLC() const; 00150 void ParseMandatoryPartL(const TDesC8& aMandatoryPart); 00151 const CSIPParamContainerBase& Params() const; 00152 CSIPParamContainerBase& Params(); 00153 00154 private: // Constructors 00155 00156 CSIPEventHeader(); 00157 void ConstructL(); 00158 void ConstructL(const TDesC8& aEventPackage); 00159 void ConstructL(const CSIPEventHeader& aSIPEventHeader); 00160 00161 private: // New functions 00162 00163 void DoInternalizeValueL(RReadStream& aReadStream); 00164 void CheckTemplateL(const TDesC8& aParam) const; 00165 // Needed for cleanup of a RPointerArray<HBufC8>: 00166 static void ResetAndDestroy(TAny* anArray); 00167 00168 private: // Data 00169 00170 HBufC8* iEventPackage; 00171 CSIPEventHeaderParams* iParams; 00172 CDesC8ArraySeg* iEventTemplates; 00173 00174 private: // For testing purposes 00175 00176 UNIT_TEST(CSIPEventHeaderTest) 00177 }; 00178 00179 // CSIPEVENTHEADER_H 00180 #endif 00181 00182 // End of File