sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __SIPURIPARSER_H__ sl@0: #define __SIPURIPARSER_H__ sl@0: sl@0: #include "GenericUriParser.h" sl@0: sl@0: /** sl@0: enum TSipDelimiterSearchFlag sl@0: Enum defining a set of flags used for search delimiter searching. sl@0: */ sl@0: enum TSipDelimiterSearchFlag sl@0: { sl@0: // Specifier for colon delimiter sl@0: ESipColonDelimiterFlag = 0x001, sl@0: // Specifier for semicolon delimiter sl@0: ESipSemiColonDelimiterFlag = 0x002, sl@0: // Specifier for query/header delimiter sl@0: ESipQueryDelimiterFlag = 0x004, sl@0: // Specifier for path delimiter seacrh sl@0: ESipPathDelimiterSearch = ESipQueryDelimiterFlag, sl@0: // Specifier for authority delimiter search sl@0: ESipAuthDelimiterSearch = ESipPathDelimiterSearch | ESipSemiColonDelimiterFlag, sl@0: // Specifier for scheme delimiter seacrh sl@0: ESipSchemeDelimiterSearch = ESipAuthDelimiterSearch | ESipColonDelimiterFlag sl@0: }; sl@0: sl@0: /** sl@0: Dependencies : CUriParserBase. sl@0: Comments : Provides Parsing functionality for the Sip Uri objects. sl@0: This is implemented as per RFC3261 for Parsing of Uris. sl@0: It uses 8-bit descriptors. sl@0: sl@0: @internalComponent sl@0: @released sl@0: */ sl@0: class CSIPUriParser: public CGenericUriParser sl@0: { sl@0: public: sl@0: sl@0: static CSIPUriParser* NewL(); sl@0: virtual ~CSIPUriParser(); sl@0: sl@0: private: sl@0: sl@0: CSIPUriParser(); sl@0: void ConstructL(); sl@0: sl@0: TInt ParseScheme(const TPtrC8& aUri, TPtrC8& aScheme); sl@0: TInt ParseAuthority(const TPtrC8& aUri, TPtrC8& aUserinfo, TPtrC8& aHost, TPtrC8& aPort, TBool aUseNetworkDelimiter); sl@0: TInt ParsePath(const TPtrC8& aUri, TPtrC8& aPath); sl@0: TInt ParseQuery(const TPtrC8& aUri, TPtrC8& aQuery); sl@0: TInt ParseFragment(const TPtrC8& aUri, TPtrC8& aFragment); sl@0: sl@0: //Internal Supporting method for Parsing sl@0: TInt FindFirstUriDelimiter(const TPtrC8& aString, TSipDelimiterSearchFlag aSearchFlag); sl@0: }; sl@0: sl@0: #endif // __SIPURIPARSER_H__ sl@0: sl@0: