diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SDP/inc/SdpUtil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SDP/inc/SdpUtil.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,316 @@ +/* +* 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 : SdpUtil.h +* Part of : SDP Codec +* Interface : - +* Version : 1.0 +* +*/ + + + + +/** + @internalComponent +*/ + +#ifndef SDPUTIL_H +#define SDPUTIL_H + +// INCLUDES +#include +#include +#include +#include "_sdpdefs.h" + +// FORWARD DECLARATIONS +class RReadStream; +class RWriteStream; +class CSdpConnectionField; +class CSSdpKeyField; +class CSdpOriginField; +class TInetAddr; + +// CLASS DECLARATION +/** + * Common utilities used in the implementation of the SDP codec. + * Utility class, cannot be instantiated + */ +class SdpUtil + { + + public: // New functions + + /** + * Generic method that checks that all aValue's chars are not on illegal charset + * + * @param aIllegalChars Illegal character set + * @param aValue String to be checked + * @param aStart Start position of the string + * @param aEnd End position of the string + * @return Validity of the string + */ + static TBool IsValidCharSet( + const TDesC8& aIllegalChars, const TDesC8& aValue, TInt aStart, TInt aEnd ); + + /** + * Checks that token list is valid (tokens with space as delimiter) + * + * @param aValue String containing tokens + * @return Validity of the string + */ + static TBool IsTokenList( const TDesC8& aValue ); + + /** + * Checks that the token is valid (substring inside string) + * + * @param aValue String containing the token + * @param aStart Start position of the token inside the string + * @param aEnd End position of the token inside the string + * @return Validity of the token + */ + static TBool IsToken( const TDesC8& aValue, TInt aStart, TInt aEnd ); + + /** + * Checks that the token is valid + * + * @param aValue Token string + * @return Validity of the token + */ + static TBool IsToken( const TDesC8& aValue ); + + /** + * Checks that the byte string is valid (substring inside string) + * + * @param aValue String + * @param aStart Start position of the byte string inside the string + * @param aEnd End position of the byte string inside the string + * @return Validity of the byte string + */ + static TBool IsByteString( const TDesC8& aValue, TInt aStart, TInt aEnd ); + + /** + * Checks that the byte string is valid + * + * @param aValue String containing the token + * @return Validity of the byte string + */ + static TBool IsByteString( const TDesC8& aValue ); + + /** + * Checks that the substring is a token-byte string pair with colon char + * as delimiter of the two strings + * + * @param aValue String containing the pair + * @param aStart Start position of the string pair + * @param aEnd End position of the string pair + * @return Validity of the pair + */ + static TBool IsTokenTextPair( + const TDesC8& aValue, TInt aStart, TInt aEnd ); + + /** + * Checks that the string conatins valid token-byte string pair with color + * char as delimiter of the two strings + * + * @param aValue String containing the pair + * @return Validity of the byte string + */ + static TBool IsTokenTextPair( const TDesC8& aValue ); + + /** + * Checks that the string does not contain any whitespace characters + * + * @param aValue String + * @return Validity of the string + */ + static TBool IsNonWhitespace( const TDesC8& aValue ); + + /** + * Checks that the string contains a valid NTP-time element + * + * @param aValue String + * @return Validity of the string + */ + static TBool IsValidNtpTime( const TDesC8& aValue ); + + /** + * Divides the buffer into a number of lines. Each line is marked + * as a TPtrC8 object and added to array that is returned to the user + * NOTE! Each line in the returned array ends in LF character + * NOTE! The aLines must end in LF character, not '\0' character + * + * @param aLines Buffer that contains all the string + * @param aErrCode Error code that is used on leave situations, when the + * aLines parameter contains invalid string set + * @return Array that contains the division of buffer to lines + */ + static RArray DivideToLinesL( + const TDesC8& aLines, TInt aErrCode ); + + /** + * Parses elements from each line. The first item in the returned array + * is the field attribute and equal character (e.g. "a=", "c="), following + * elements are parsed from the string using space character as delimiter + * + * @param aLine String containing line that ends to LF character + * @param aErrCode Error code that is used on leave situations, when + * the contents of aLine are illegal + * @return Array that contains the division of string to elements + */ + static RArray GetElementsFromLineL( + const TDesC8& aLine, TInt aErrCode ); + + /** + * Parses elements from each line. The first item in the returned array + * is the field attribute and equal character (e.g. "a=", "c="), following + * elements are parsed from the string using aDelimiter as delimiter + * + * @param aLine String containing line that ends to LF character + * @param aDelimiter Delimiter character + * @param aErrCode Error code that is used on leave situations, when + * the contents of aLine are illegal + * @return Array that contains the division of string to elements + */ + static RArray GetElementsFromLineL( + const TDesC8& aLine, TChar aDelimiter, TInt aErrCode ); + + /** + * Parses elements from each line. The first item in the returned array + * is the field attribute and equal character (e.g. "a=", "c="), following + * elements are parsed from the string using space character as delimiter + * + * @param aLexer Lexer that has been initialized with the string + * @param aErrCode Error code that is used on leave situations, when + * the contents of aLine are illegal + * @return Array that contains the division of string to elements + */ + static RArray GetElementsFromLineL( + TLex8& aLexer, TChar aDelimiter, TInt aErrCode ); + + /** + * Checks if the string contains only POS-DIGIT characters + * + * @param aDes String + * @return Validity of POS-DIGIT string + */ + static TBool IsPosDigit( const TDesC8& aDes ); + + /** + * Checks if the string contains only DIGIT characters + * + * @param aDes String + * @return Validity of DIGIT string + */ + static TBool IsDigit( const TDesC8& aDes ); + + /** + * Checks if the string contains valid characters + * + * @param aValidChars Valid characters allowed in the string + * @param aDes String + * @return Validity of the string + */ + static TBool IsValidChars( const TDesC8& aValidChars, const TDesC8& aDes ); + + /** + * Checks if the string contains only token characters + * + * @param aValue String + * @return Validity of the string + */ + static TBool IsTokenChar( const TDesC8& aValue ); + + /** + * Checks if the character is a valid token character + * + * @param aChar Character + * @return Validity of the character + */ + static TBool IsTokenChar( TChar aChar ); + + /** + * Checks if the string is a valid token. The string can contain slash character, + * which divides the line into two tokens. The two tokens are then individually + * verified. + * + * @param aValue String + * @return Validity of the string + */ + static TBool IsTokenCharWithOptionalSlash( const TDesC8& aValue ); + + /** + * Checks if the string is a valid token. The string can contain space characters, + * which divides the string into a number of tokens. Each token is then individually + * verified. + * + * @param aValue String + * @return Validity of the string + */ + static TBool IsTokenCharWithSpacesL( const TDesC8& aValue ); + + /** + * Checks if the string is a valid token. The string can contain slash character, + * which divides the line into two tokens. The two tokens are then individually + * verified. + * + * @param aValue String + * @return Validity of the string + */ + static void EncodeBufferL( + const TDesC8& aValue, TInt aIndex, RWriteStream& aStream ); + + /** + * Sets default network type ("IN") and default address type ("IP4" or "IP6") + * to variables given as parameters + * + * @param aPool String pool + * @param aInetAddr Internet address + * @param aNetType Network type + * @param aAddressType Address type + */ + static void SetDefaultNetTypeAndAddrType( + RStringPool aPool, const TInetAddr& aAddress, + RStringF& aNetType, RStringF& aAddressType ); + + /** + * Skips spaces until next line break, if the line break can be found. + * @param aLexer + * @return ETrue if the line break was found, otherwise EFalse. + */ + static TBool SkipSpacesUntilNextLineBreak( TLex8& aLexer ); + + private: + + /** + * After the field tag has been parsed out, all the field elements are + * parsed in this method + * + * @param aArray Reference to the array that contains the chopped elements + * @param aLexer Used lexer + * @param aDelimiter Delimiter character that determines the separation of elements + * @param aErrCode The error code that is used on leaves, when the argument is invalid + */ + static void ChopElementsFromLineL( + RArray& aArray, TLex8& aLexer, TChar aDelimiter, TInt aErrCode ); + + /** + * Private constructor + * This class can never be instantiated + */ + SdpUtil(); + }; + +#endif