00001 /* 00002 * ============================================================================= 00003 * Name : SdpDocument.h 00004 * Part of : SDP Codec 00005 * Interface : SDK API, SDP Codec API 00006 * Description : 00007 * Version : 1.0 00008 * 00009 * Copyright (c) 2003 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 #ifndef CSDPDOCUMENT_H 00022 #define CSDPDOCUMENT_H 00023 00024 // INCLUDES 00025 #include <e32base.h> 00026 #include <badesca.h> 00027 #include "_sdpdefs.h" 00028 #include <stringpool.h> 00029 00030 // FORWARD DECLARATIONS 00031 class SdpUtil; 00032 class RReadStream; 00033 class RWriteStream; 00034 class CUri8; 00035 class CDesC8Array; 00036 class CSdpOriginField; 00037 class CSdpEmailField; 00038 class CSdpPhoneField; 00039 class CSdpConnectionField; 00040 class CSdpBandwidthField; 00041 class CSdpTimeField; 00042 class CSdpAttributeField; 00043 class CSdpMediaField; 00044 class CSdpKeyField; 00045 class CSdpCodecParseUtil; 00046 00047 // CLASS DECLARATION 00063 class CSdpDocument : public CBase 00064 { 00065 public: // Constructors and destructor 00072 IMPORT_C static CSdpDocument* DecodeL(const TDesC8& aText); 00073 00080 IMPORT_C static CSdpDocument* DecodeLC(const TDesC8& aText); 00081 00091 IMPORT_C static CSdpDocument* NewL(); 00092 00103 IMPORT_C static CSdpDocument* NewLC(); 00104 00108 IMPORT_C ~CSdpDocument(); 00109 00110 public: 00116 IMPORT_C void ExternalizeL(RWriteStream& aStream) const; 00117 00124 IMPORT_C static CSdpDocument* InternalizeL(RReadStream& aStream); 00125 00137 IMPORT_C void EncodeL(RWriteStream& aStream) const; 00138 00144 IMPORT_C CSdpDocument* CloneL() const; 00145 00151 IMPORT_C TBool IsValid() const; 00152 00159 IMPORT_C TUint SdpVersion() const; 00160 00168 IMPORT_C CSdpOriginField* OriginField(); 00169 00175 IMPORT_C const CSdpOriginField* OriginField() const; 00176 00184 IMPORT_C void SetOriginField(CSdpOriginField* aObj); 00185 00191 IMPORT_C const TDesC8& SessionName() const; 00192 00202 IMPORT_C void SetSessionNameL(const TDesC8& aValue); 00203 00209 IMPORT_C const TDesC8& Info() const; 00210 00218 IMPORT_C void SetInfoL(const TDesC8& aValue); 00219 00227 IMPORT_C CUri8* Uri(); 00228 00234 IMPORT_C const CUri8* Uri() const; 00235 00243 IMPORT_C void SetUri(CUri8* aValue); 00244 00253 IMPORT_C CDesC8Array& EmailFields(); 00254 00263 IMPORT_C CDesC8Array& PhoneFields(); 00264 00272 IMPORT_C CSdpConnectionField* ConnectionField(); 00273 00279 IMPORT_C const CSdpConnectionField* ConnectionField() const; 00280 00288 IMPORT_C void SetConnectionField(CSdpConnectionField* aObj); 00289 00302 IMPORT_C RPointerArray<CSdpBandwidthField>& BandwidthFields(); 00303 00317 IMPORT_C RPointerArray<CSdpTimeField>& TimeFields(); 00318 00325 IMPORT_C const TDesC8& ZoneAdjustments() const; 00326 00333 IMPORT_C void SetZoneAdjustmentsL(const TDesC8& aValue); 00334 00342 IMPORT_C CSdpKeyField* Key(); 00343 00349 IMPORT_C const CSdpKeyField* Key() const; 00350 00358 IMPORT_C void SetKey(CSdpKeyField* aObj); 00359 00372 IMPORT_C RPointerArray<CSdpAttributeField>& AttributeFields(); 00373 00389 IMPORT_C RPointerArray<CSdpMediaField>& MediaFields(); 00390 00391 private: 00392 CSdpDocument(); 00393 void ConstructL(); 00394 void ConstructL(const CSdpDocument& aSdpDocument); 00395 void DoInternalizeL(RReadStream& aStream); 00396 00397 void ParseL (const TDesC8& aText); 00398 void ParseSessionVersionL(); 00399 void ParseSessionOwnerL(); 00400 void ParseSessionNameL(); 00401 void ParseSessionInformationL(); 00402 void ParseUriL(); 00403 void ParseEmailL(); 00404 void ParsePhoneL(); 00405 void ParseConnectionL(); 00406 void ParseBandwidthL(); 00407 void ParseTimeFieldL(); 00408 void ParseZoneAdjustmentL(); 00409 void ParseEncryptionKeyL(); 00410 void ParseAttributeFieldL(); 00411 void ParseMediaLevelL (); 00412 void ExternalizeDesCArrayL(CDesC8ArraySeg& aArray, 00413 RWriteStream& aStream) const; 00414 void EncodeDesCArrayL(CDesC8ArraySeg& aArray,TInt aIndex, 00415 RWriteStream& aStream) const; 00416 00417 TDesC8& GetTokenFromStreamL(RReadStream& aStream); 00418 00419 CSdpDocument(const CSdpDocument&); // Hidden. 00420 CSdpDocument& operator = (const CSdpDocument&); // Hidden 00421 00422 private: // Data 00423 00424 HBufC8* iInfo; 00425 HBufC8* iSessionName; 00426 HBufC8* iZoneAdjustments; 00427 CSdpKeyField* iSdpKeyField; 00428 CSdpOriginField* iSdpOriginField; 00429 CSdpConnectionField* iSdpConnectionField; 00430 TUint iSdpVersion; 00431 RPointerArray<CSdpTimeField>* iTimeFields; 00432 RPointerArray<CSdpBandwidthField>* iBandwidthFields; 00433 RPointerArray<CSdpAttributeField>* iAttributeFields; 00434 RPointerArray<CSdpMediaField>* iMediaFields; 00435 CUri8* iUri; 00436 CDesC8ArraySeg* iEmailFields; 00437 CDesC8ArraySeg* iPhoneFields; 00438 RStringPool iPool; 00439 HBufC8* iToken; 00440 CSdpCodecParseUtil* iSdpCodecParseUtil; 00441 }; 00442 00443 // CSDPDOCUMENT_H 00444 #endif