00001 /* 00002 * ============================================================================= 00003 * Name : sipcontactheader.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 CSIPCONTACTHEADER_H 00023 #define CSIPCONTACTHEADER_H 00024 00025 // INCLUDES 00026 #include "SipParameterHeaderBase.h" 00027 #include "_sipcodecdefs.h" 00028 00029 // FORWARD DECLARATIONS 00030 class CSIPAddress; 00031 class CSIPContactHeaderParams; 00032 00033 // CLASS DECLARATION 00043 class CSIPContactHeader : public CSIPParameterHeaderBase 00044 { 00045 public: // Constructors and destructor 00046 00054 IMPORT_C static RPointerArray<CSIPContactHeader> 00055 DecodeL(const TDesC8& aValue); 00056 00063 IMPORT_C static CSIPContactHeader* NewL(CSIPAddress* aSIPAddress); 00064 00071 IMPORT_C static CSIPContactHeader* NewLC(CSIPAddress* aSIPAddress); 00072 00076 IMPORT_C ~CSIPContactHeader(); 00077 00078 00079 public: // New functions 00080 00086 IMPORT_C TBool operator==(const CSIPContactHeader& aHeader) const; 00087 00092 IMPORT_C TBool Star() const; 00093 00099 IMPORT_C TInt ExpiresParameter() const; 00100 00106 IMPORT_C void SetExpiresParameterL(TInt aExpiresParam); 00107 00114 IMPORT_C TReal QParameter() const; 00115 00121 IMPORT_C void SetQParameterL(TReal aQValue); 00122 00128 IMPORT_C const CSIPAddress* SIPAddress() const; 00129 00135 IMPORT_C CSIPAddress* SIPAddress(); 00136 00143 IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress); 00144 00151 IMPORT_C static CSIPHeaderBase* 00152 InternalizeValueL(RReadStream& aReadStream); 00153 00154 00155 public: // From CSIPHeaderBase 00156 00160 IMPORT_C CSIPHeaderBase* CloneL() const; 00161 00165 IMPORT_C RStringF Name() const; 00166 00167 00168 public: // From CSIPHeaderBase, for internal use 00169 00170 TBool MoreThanOneAllowed() const; 00171 TBool HasCompactName() const; 00172 RStringF CompactName() const; 00173 TPreferredPlace PreferredPlaceInMessage() const; 00174 00175 public: // New functions, for internal use 00176 00177 static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue); 00178 00179 private: // From CSIPHeaderBase 00180 00181 void ExternalizeValueL(RWriteStream& aWriteStream) const; 00182 00183 private: // From CSIPParameterHeaderBase 00184 00185 TBool ParamInsertionAllowed() const; 00186 HBufC8* ToTextMandatoryPartLC() const; 00187 void ParseMandatoryPartL(const TDesC8& aMandatoryPart); 00188 const CSIPParamContainerBase& Params() const; 00189 CSIPParamContainerBase& Params(); 00190 00191 private: // Constructors 00192 00193 CSIPContactHeader(TBool aIsStar=EFalse); 00194 void ConstructL(); 00195 void ConstructL(CSIPAddress* aSIPAddress); 00196 void ConstructL(const CSIPContactHeader& aContactHeader); 00197 00198 private: // New functions 00199 00200 void DoInternalizeValueL(RReadStream& aReadStream); 00201 00202 private: // Data 00203 00204 CSIPAddress* iSIPAddress; 00205 CSIPContactHeaderParams* iParams; 00206 TBool iIsStar; 00207 00208 private: // For testing purposes 00209 00210 UNIT_TEST(CSIPContactHeaderTest) 00211 }; 00212 00213 // CSIPCONTACTHEADER_H 00214 #endif 00215 00216 // End of File