diff -r 2fe1408b6811 -r e1b950c65cb4 epoc32/include/mw/sdpfmtattributefield.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/mw/sdpfmtattributefield.h Wed Mar 31 12:27:01 2010 +0100 @@ -0,0 +1,263 @@ +/* +* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Name : SdpFmtAttributeField.h +* Part of : SDP Codec +* Interface : SDK API, SDP Codec API +* Version : 1.0 +* +*/ + + + +#ifndef CSDPFMTATTRIBUTEFIELD_H +#define CSDPFMTATTRIBUTEFIELD_H + +// INCLUDES +#include +#include +#include "_sdpdefs.h" + +// FORWARD DECLARATIONS +class RReadStream; +class RWriteStream; +class CSdpAttributeField; +class TSdpRtpmapValue; + +// CLASS DECLARATION +/** + * @publishedAll + * @released + * + * This class encapsulates the attribute field of the Session Description + * Protocol for media format/payload type level attributes. Media and session + * level attributes are supported by the CSdpAttributeField class. + * + * 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 CSdpFmtAttributeField : public CBase + { + public: // Constructors and destructor + /** + * Constructs a new media format level attribute field. + * + * @param aText A string containing a correctly + * formatted field value terminated by a CRLF. + * @return a new instance. + */ + IMPORT_C static CSdpFmtAttributeField* DecodeL( const TDesC8& aText ); + + /** + * Constructs a new media format level attribute 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 CSdpFmtAttributeField* DecodeLC( const TDesC8& aText); + + /** + * Constructs a new media level format attribute field. + * + * @param aAttribute The attribute name. It can be a pre-defined + * name in the SDP string pool or defined by the client. + * @param aFormat A valid format/payload identifier + * used in the format list of the media description. + * @param aValue A valid attribute value or an empty + * descriptor to omit the value part. + * @return a new instance. + */ + IMPORT_C static CSdpFmtAttributeField* NewL( + RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue ); + + /** + * Constructs a new media format level attribute field and adds the + * pointer to the cleanup stack. + * + * @param aAttribute The attribute name. It can be a pre-defined + * name in the SDP string pool or defined by the client. + * @param aFormat A valid format/payload identifier + * used in the format list of the media description. + * @param aValue A valid attribute value or an empty + * descriptor to omit the value part. + * @return a new instance. + */ + IMPORT_C static CSdpFmtAttributeField* NewLC( + RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue ); + + /** + * Deletes the resources held by the instance. + */ + IMPORT_C ~CSdpFmtAttributeField(); + + 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 attribute field. + */ + IMPORT_C void EncodeL( RWriteStream& aStream ) const; + + /** + * Creates a new instance that is equal to the target. + * + * @return a new instance. + */ + IMPORT_C CSdpFmtAttributeField * 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 CSdpFmtAttributeField& aObj ) const; + + /** + * Gets the attribute. + * + * @return The attribute name. The name can be pre-defined + * name in the SDP string table or defined by the client. + */ + IMPORT_C RStringF Attribute() const; + + /** + * Gets the format. + * + * @return The format. + */ + IMPORT_C const TDesC8& Format() const; + + /** + * Gets the attribute value. + * + * @return The value or an empty descriptor if there is no value part. + */ + IMPORT_C const TDesC8& Value() const; + + /** + * Sets the attribute, format/payload type and attribute value. + * + * @param aAttribute A valid attribute name. It can be a + * pre-defined name in the SDP string pool or defined by + * the client. + * @param aFormat A valid format/payload identifier + * used in the formatlist of the media description. + * @param aValue A valid attribute value or an empty + * descriptor to omit the value part. + * @leave KErrSdpCodecMediaAttributeField if aAttribute is not rtpmap + * or fmtp attribute. + */ + IMPORT_C void SetL( + RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue ); + + public: // Internal to codec + + /** + * 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 CSdpFmtAttributeField* InternalizeL( RReadStream& aStream ); + + /** + * Returns attribute field + * + * @return Attribute field + */ + const CSdpAttributeField* AttributeField() const; + + private: // New methods + + /** + * Creates object from the stream data. + * Does the "2nd phase construction" of internalization. + * + * @param aStream Stream where the object's state will be read + */ + void DoInternalizeL( RReadStream& aStream ); + + /** + * Formats value parameters + * + * @param aField Attribute field object + */ + void FormatValueParamsL( CSdpAttributeField* aField ); + + private: // Construction and destruction + + /** + * Constructor + */ + CSdpFmtAttributeField(); + + /** + * Second phase construction + * + * @param aText A string containing a correctly formatted field value + * terminated by a CRLF. + */ + void ConstructL( const TDesC8& aText ); + + /** + * Second phase construction + * + * @param aAttribute The attribute from the pre-defined SDP string + * table or defined by the user + * @param aFormat A valid format/payload identifier used in the format + * list of the media description. + * @param aValue A valid attribute value or an empty descriptor + * to omit the value part. + */ + void ConstructL( + RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue ); + + + /** + * Decode format parameter from string + * + * @param aText A text includeing format parameter. + */ + void DecodeFormatL(const TDesC8& aText); + + __DECLARE_TEST; + + private: + + RStringPool iPool; + CSdpAttributeField* iAttributeField; + /** Pointer to the format part*/ + TPtrC8 iFormat; + /** Pointer to the format parameters*/ + TPtrC8 iValuePart; + }; + +#endif // CSDPFMTATTRIBUTEFIELD_H