diff -r 2fe1408b6811 -r e1b950c65cb4 epoc32/include/sdporiginfield.h --- a/epoc32/include/sdporiginfield.h Tue Mar 16 16:12:26 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,460 +0,0 @@ -/* -* 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 : SdpOriginField.h -* Part of : SDP Codec -* Interface : SDK API, SDP Codec API -* Version : 1.0 -* -*/ - - - -#ifndef CSDPORIGINFIELD_H -#define CSDPORIGINFIELD_H - -// INCLUDES -#include -#include -#include -#include "_sdpdefs.h" - -// CONSTANTS -const TInt KMaxAddressLength = 256; - -// FORWARD DECLARATIONS -class RReadStream; -class RWriteStream; -class CSdpOriginFieldPtrs; - -// CLASS DECLARATION -/** - * @publishedAll - * @released - * - * This class encapsulates the origin 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 CSdpOriginField : public CBase - { - public: // Constructors and destructor - - /** - * Constructs a new origin field. - * - * @param aText A string containing a correctly - * formatted field value terminated by a CRLF. - * @return a new instance. - */ - IMPORT_C static CSdpOriginField* DecodeL( const TDesC8& aText ); - - /** - * Constructs a new origin 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 CSdpOriginField* DecodeLC( const TDesC8& aText ); - - /** - * Constructs a new origin field. - * - * @param aUserName A valid user name value. - * @param aSessionId A valid session id value. - * @param aSessionVersion A valid announcement version value. - * @param aAddress A unicast IP address from either - * KAfInet or KAfInet6 family. - * @return a new instance. - */ - IMPORT_C static CSdpOriginField* NewL( const TDesC8& aUserName, - TInt64 aSessionId, - TInt64 aSessionVersion, - TInetAddr& aAddress ); - - /** - * Constructs a new origin field and adds the pointer to the cleanup - * stack. - * - * @param aUserName A valid user name value. - * @param aSessionId A valid session id value. - * @param aSessionVersion A valid announcement version value. - * @param aAddress A unicast IP address from either - * KAfInet or KAfInet6 family. - * @return a new instance. - */ - IMPORT_C static CSdpOriginField* NewLC( const TDesC8& aUserName, - TInt64 aSessionId, - TInt64 aSessionVersion, - TInetAddr& aAddress ); - - /** - * Constructs a new origin field. - * - * @param aUserName A valid user name value. - * @param aSessionId A valid session id value. - * @param aSessionVersion A valid announcement version value. - * @param aNetType A valid network type value (typically "IN"). - * @param aAddressType A valid address type value - * (typically "IP4" or "IP6"). - * @param aAddress A unicast IP Address, Fully - * Qualified Domain Name (FQDN), or an other type of - * address allowed for the address type. - * @return a new instance. - */ - IMPORT_C static CSdpOriginField* NewL( const TDesC8& aUserName, - TInt64 aSessionId, - TInt64 aSessionVersion, - RStringF aNetType, - RStringF aAddressType, - const TDesC8& aAddress ); - - /** - * Constructs a new origin field and adds the pointer to the cleanup - * stack. - * - * @param aUserName A valid user name value. - * @param aSessionId A valid session id value. - * @param aSessionVersion A valid announcement version value. - * @param aNetType A valid network type value (typically "IN"). - * @param aAddressType A valid address type value - * (typically "IP4" or "IP6"). - * @param aAddress A unicast IP Address, Fully Qualified Domain - * Name (FQDN), or an other type of address allowed - * for the address type. - * @return a new instance. - */ - IMPORT_C static CSdpOriginField* NewLC( const TDesC8& aUserName, - TInt64 aSessionId, - TInt64 aSessionVersion, - RStringF aNetType, - RStringF aAddressType, - const TDesC8& aAddress ); - - /** - * Deletes the resources held by the instance. - */ - IMPORT_C ~CSdpOriginField(); - - 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 origin field. - */ - IMPORT_C void EncodeL( RWriteStream& aStream ) const; - - /** - * Creates a new instance that is equal to the target. - * - * @return a new instance. - */ - IMPORT_C CSdpOriginField* 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 CSdpOriginField& aObj ) const; - - /** - * Gets the user name. - * - * @return User name. - */ - IMPORT_C const TDesC8& UserName() const; - - /** - * Sets the user name. - * - * @param aValue A valid user name value. - * @leave KErrSdpCodecOriginField if aValue is not a valid user name. - */ - IMPORT_C void SetUserNameL( const TDesC8& aValue ); - - /** - * Gets the session id of the origin field. - * - * @return Session id. - */ - IMPORT_C TInt64 SessionId() const; - - /** - * Sets the session id. - * - * @param aValue A valid session id value. - */ - IMPORT_C void SetSessionId( TInt64 aValue ); - - /** - * Gets the announcement version. - * - * @return Version. - */ - IMPORT_C TInt64 Version() const; - - /** - * Sets the announcement version.. - * - * @param aValue A valid version value. - */ - IMPORT_C void SetVersion( TInt64 aValue ); - - /** - * Gets the network type. - * - * @return The network type from pre-defined SDP string - * table or given by the user. - */ - IMPORT_C RStringF NetType() const; - - /** - * Gets the address type. - * - * @return The address type from pre-defined SDP string - * table or given by the user. - */ - IMPORT_C RStringF AddressType() const; - - /** - * Gets the address. - * - * @return Address as an IP address or null if it is - * not an IP address. This may be e.g. when the address has - * been specified as a FQDN. In this case, the address can be - * accessed using the other getters. - */ - IMPORT_C const TInetAddr* InetAddress() const; - - /** - * Gets the address. - * - * @return Address as a string. - */ - IMPORT_C const TDesC8& Address() const; - - /** - * Sets the address, network and address type. - * Also sets the network type to "IN" and address type to "IP4" or - * "IP6" depending on the address family of aValue. - * - * @param aValue A unicast IP address from either KAfInet - * or KAfInet6 family. - */ - IMPORT_C void SetInetAddress( const TInetAddr& aValue ); - - /** - * Sets the address, network and address type. - * - * @param aAddress A unicast IP Address, Fully Qualified Domain - * Name (FQDN), or an other type of address allowed for the - * address type. - * @param aNetType A valid network type value (typically "IN"). - * @param aAddressType A valid address type value - * (typically "IP4" or "IP6"). - * @leave KErrSdpCodecOriginField if aNetType or aAddressType are not - * valid tokens, or aAddress is invalid, or aAddress type - * is not aligned with the address format - */ - IMPORT_C void SetAddressL( const TDesC8& aAddress, - RStringF aNetType, - RStringF aAddressType ); - - 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 CSdpOriginField* InternalizeL( RReadStream& aStream ); - - private: // Constructors - - /** - * Constructor - */ - CSdpOriginField(); - - /** - * Second phase constructor. Parses the text string and initializes - * the member variables - * - * @param aText Line of text that will be parsed (ends on the newline) - */ - void ConstructL( const TDesC8& aText ); - - /** - * Second phase constructor. Constructs the object. - * - * @param aUserName A valid user name value. - * @param aSessionId A valid session id value. - * @param aSessionVersion A valid announcement version value. - * @param aAddress A unicast IP address from either - * KAfInet or KAfInet6 family. - */ - void ConstructL( const TDesC8& aUserName, - TInt64 aSessionId, - TInt64 aSessionVersion, - TInetAddr& aUnicastAddress ); - - /** - * Second phase constructor. Constructs the object. - * - * @param aUserName A valid user name value. - * @param aSessionId A valid session id value. - * @param aSessionVersion A valid announcement version value. - * @param aNetType A valid network type value (typically "IN"). - * @param aAddressType A valid address type value - * (typically "IP4" or "IP6"). - * @param aAddress A unicast IP Address, Fully Qualified Domain - * Name (FQDN), or an other type of address allowed - * for the address type. - */ - void ConstructL( const TDesC8& aUserName, - TInt64 aSessionId, - TInt64 aSessionVersion, - RStringF aNetType, - RStringF aAddressType, - const TDesC8& aAddress ); - - // These are unnecessary? Derived from CBase, prevents the use - CSdpOriginField( const CSdpOriginField& ); // Hidden. - CSdpOriginField& operator = ( const CSdpOriginField& ); // Hidden - - private: // New methods - - /** - * Checks if the given address is valid - * - * @param aAddress Address to be checked - * @return Valid address or not - */ - TBool IsValidAddress( const TDesC8& aAddress ) const; - - /** - * Checks if the given address is valid - * - * @param aAddr Address to be checked - * @return Valid address or not - */ - TBool IsValidAddress( const TInetAddr& addr ) const; - - /** - * Checks that address type matches with address format - * - * @param aAddress Address - * @param aType Address type - * @param aPool String pool - * @return Type Matches with format or not - */ - TBool TypeMatchesWithFormat( - const TDesC8& aAddress, const TDesC8& aType, - RStringPool aPool ) const; - - /** - * Checks if the given username is valid - * - * @param aUserName Username - * @return Validity of the given username - */ - TBool IsValidUserName( const TDesC8& aUserName ) const; - - /** - * Parses username, initializes iUserName - * - * @param aArray Array containing all the elements - */ - void ParseUserNameL( RArray& aArray ); - - /** - * Parses session ID and version, initializes iSessionId - * and iSessionVersion - * - * @param aArray Array containing all the elements - */ - void ParseSessionIDAndVersionL( RArray& aArray ); - - /** - * Parses network type and address type, initializes - * iNetType and iAddressType - * - * @param aArray Array containing all the elements - */ - void ParseNetTypeAndAddressTypeL( RArray& aArray ); - - /** - * Parses address, checks address against address type, - * initializes iAddress - * - * @param aArray Array containing all the elements - */ - void ParseAddressL( RArray& aArray ); - - inline CSdpOriginFieldPtrs& OriginFieldPtrs(); - - inline const CSdpOriginFieldPtrs& OriginFieldPtrs() const; - - TInt64 Get63Msbs( const TDesC8& aDecimalValue ) const; - void SetIPAddressType( const TInetAddr& aAddr ); - - private: // Data - - RStringPool iPool; - - // - HBufC8* iUserName; - // - TInt64 iSessionId; - // - TInt64 iSessionVersion; - // - RStringF iNetType; - //
- RStringF iAddressType; - //
- // Either one is used (this or iAddressType/iAddress combo) - // Can be defined as mutable because this variable does not affect - // to the state of the object, but it is needed as const pointer - // is returned on InetAddr() method - mutable TInetAddr iUnicastAddress; - TBuf8 iAddress; - // For configuring the address into TInetAddr - TBuf iAddress16; - - __DECLARE_TEST; - }; - -#endif // CSDPORIGINFIELD_H