diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SDP/api/SdpRepeatField.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SDP/api/SdpRepeatField.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,211 @@ +/* +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Name : SdpRepeatField.h +* Part of : SDP Codec +* Interface : SDK API, SDP Codec API +* Version : 1.0 +* +*/ + + + +#ifndef CSDPREPEATFIELD_H +#define CSDPREPEATFIELD_H + +// INCLUDES +#include +#include +#include + +// FORWARD DECLARATIONS +class RReadStream; +class RWriteStream; + +// CLASS DECLARATION +/** + * @publishedAll + * @released + * + * This class encapsulates the repeat times field of the + * Session Description Protocol. + * + * The normative reference for correct formatting and values is + * draft-ietf-mmusic-sdp-new-14 unless specified otherwise in + * member documentation. The implementation supports this normative + * reference, but does not enforce it fully. + * + * @lib sdpcodec.lib + */ +class CSdpRepeatField : public CBase + { + public: // Constructors and destructor + /** + * Constructs a new repeat times field. + * + * @param aText A string containing a correctly + * formatted field value terminated by a CRLF. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* DecodeL(const TDesC8& aText); + + /** + * Constructs a new repeat times field and adds the pointer to the + * cleanup stack. + * + * @param aText A string containing a correctly + * formatted field value terminated by a CRLF. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* DecodeLC(const TDesC8& aText); + + /** + * Constructs a new repeat times field. + * + * @param aRepeatInterval Repeat interval value + * greater than zero. + * @param aActiveDuration Active duration. + * @param aOffsets At least one time offset. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* NewL( + const TSdpTypedTime aRepeatInterval, + const TSdpTypedTime aActiveDuration, + const RArray& aOffsets); + + /** + * Constructs a new repeat times field and adds the pointer to the + * cleanup stack. + * + * @param aRepeatInterval Repeat interval value + * greater than zero. + * @param aActiveDuration Active duration. + * @param aOffsets At least one time offset. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* NewLC( + const TSdpTypedTime aRepeatInterval, + const TSdpTypedTime aActiveDuration, + const RArray& aOffsets); + + /** + * Deletes the resources held by the instance. + */ + IMPORT_C ~CSdpRepeatField(); + + public: // New functions + /** + * Outputs the field formatted according to SDP syntax and including + * the terminating CRLF. + * + * @param aStream Stream used for output. On return + * the stream includes correctly formatted repeat field. + */ + IMPORT_C void EncodeL(RWriteStream& aStream) const; + + /** + * Creates a new instance that is equal to the target. + * + * @return a new instance. + */ + IMPORT_C CSdpRepeatField * CloneL() const; + + /** + * Compares this instance to another for equality. + * + * @param aObj The instance to compare to. + * @return ETrue if equal, EFalse if not. + */ + IMPORT_C TBool operator == (const CSdpRepeatField & aObj) const; + + /** + * Gets the repeat interval. + * + * @return The repeat interval. + */ + IMPORT_C const TSdpTypedTime RepeatInterval() const; + + /** + * Sets the repeat interval. + * + * @param aValue Repeat interval value greater than zero. + * @leave KErrSdpCodecRepeatField if aValue is not positive integer + * value. + */ + IMPORT_C void SetRepeatIntervalL(const TSdpTypedTime aValue); + + /** + * Gets the active duration.. + * + * @return The active duration. + */ + IMPORT_C const TSdpTypedTime ActiveDuration() const; + + /** + * Sets the active duration. + * + * @param Active duration. + */ + IMPORT_C void SetActiveDuration(const TSdpTypedTime aValue); + + /** + * Gets the array of time offsets. + * This array is used directly for element insertion and removal. + * + * @return The offsets. + */ + IMPORT_C const RArray& TimeOffsets() const; + + /** + * Sets the time offsets. + * + * @param aOffsets At least one time offset. + */ + IMPORT_C void SetTimeOffsetsL(const RArray& aValue); + + public: + /** + * Externalizes the object to stream + * + * @param aStream Stream where the object's state will be stored + */ + void ExternalizeL(RWriteStream& aStream) const; + + /** + * Creates object from the stream data + * + * @param aStream Stream where the object's state will be read + * @return Initialized object + */ + static CSdpRepeatField* InternalizeL(RReadStream& aStream); + + private: + CSdpRepeatField(const TSdpTypedTime aRepeatInterval, + const TSdpTypedTime aActiveDuration); + CSdpRepeatField(); + void ConstructL(const TDesC8& aText); + void ConstructL(const RArray& aOffsets); + + + private: // Data + RStringPool iPool; + TSdpTypedTime iRepeatInterval; + TSdpTypedTime iActiveDuration; + RArray iTimeOffsets; + + void __DbgTestInvariant() const; + + }; + +#endif // CSDPREPEATFIELD_H