diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpavcontrolpoint/avcpengine/inc/upnppathresolver.h --- a/upnpavcontrolpoint/avcpengine/inc/upnppathresolver.h Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,240 +0,0 @@ -/** @file -* Copyright (c) 2005-2006 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: CUpnpPathResolver -* -*/ - - - -#ifndef C_CUPNPPATHRESOLVER_H -#define C_CUPNPPATHRESOLVER_H - -// INCLUDES -#include - -#include - -// FORWARD DECLARATIONS -class CUpnpPathElement; -class CUpnpResolveHandler; -class MUpnpResolverObserver; -class CUpnpAVCPManager; -class TFileInfo; -class CUpnpAVCPEngineSession; - -// CLASS DECLARATION -/** -* Class responsible for managing path element for one MS. -* It helps in translating pathname into id. -* -* @since Series 60 3.1 -*/ -class CUpnpPathResolver : public CBase - { - public: - /** - * Two-phased constructor. - */ - static CUpnpPathResolver* NewL(CUpnpAVCPManager& aManager,const TDesC8& aUUID); - - /** - * Destructor. - */ - virtual ~CUpnpPathResolver(); - - public: // New functions - /** - * Return UDN of MS that resolver is related - */ - const TDesC8& UUID() const; - - /** - * Add new path element into resolver. - * if resolver has element with the same name and ids ignore. - * if resolver has element with the same naem but different id, - * perform duplicatione mechanism by adding '(inx)' at the end of name, new name is returned. - * - * @param aParentId parent id - * @param aId id - * @param aName name of element - * @param aImportURI importURI of element - * @return approved name, it may be the same as aName if we don't have duplication, ale is followed by index - */ - const TDesC8& AddElementL(const TDesC8& aParentId, const TDesC8& aId, const TDesC8& aName, const TDesC8& aImportURI = KNullDesC8); - - /** - * Gets path element for object with given parent id and name. - * Ownership is not passed to caller. - * - * @param aParentId parent id - * @param aName name - * @return NULL if not found, else instance describing path element - */ - CUpnpPathElement* GetElementL(const TDesC8& aParentId, const TDesC8& aName) const; - /** - * Remove given element from cache array (if found in cache it destroys also given instance) - * - * @param aElement param to remove - */ - void RemoveElementD(CUpnpPathElement* aElement); - /** - * Request for resolving pathname and notify given observer after process will be finished. - */ - void ResolveIdL(const TDesC8& aPath, MUpnpResolverObserver& aObserver); - /** - * Remove instance of resolver's handler from array of active handlers - */ - void RemoveHandler(CUpnpResolveHandler* aHandler); - /** - Compares if two path resolvers have the UDN - @param aFirst First message to compare. - @param aSecond Second message to compare. - @result ETrue if same session id, EFalse otherwise. - **/ - static TBool Match(const CUpnpPathResolver& aElement1, const CUpnpPathResolver& aElement2) ; - /** - * Notify if event comes from CDS with system id, - * If system id is changed path elements will be removed - */ - void StateChangedL(const TDesC8& aSystemId); - /** - * Set modification time based on date element from CDS's object. - * - * @param aDateElement XML element with date - * @param aEntry structure to be updated - */ - void SetModifiedTimeL(TXmlEngElement& aDateElement, TFileInfo& aEntry); - /** - * Parse Browse response and updates information about path elements - * If aDirList is defined, update array by parsed path element - * (set also file/directory attributes) - * If aObjectId is not equal KNullDesC8, then also try to find resource URI for aObjectId. - * - * @param aResponse response - * @param aDirList array of directory entry elements - * @param aObjectId object id for resource URI - * @param aResUri found resource - */ - void ParseBrowseResponseL(const TDesC8& aResponse, RArray* aDirList = NULL, - const TDesC8& aObjectId = KNullDesC8, HBufC8** aResUri = NULL); - /** - * Parse Browse response and find resourse URI for object with given id. - * - * @param aResponse response - * @param aId id of object - * @param aResUri parameter to be set with found resoursce URI - * @return ETrue if found, else EFalse - */ - TBool GetResUriL(const TDesC8& aResponse, const TDesC8& aId, HBufC8*& aResUri); - /** - * Parse Browse response and find resourse for object with given id. - * - * @param aResponse response - * @param aId id of object - * @return ETrue if found, else EFalse - */ - TInt GetItemL(const TDesC8& aResponse, const TDesC8& aId); - - /** - * Parse Browse response of CreateObject - * - * @param aResponse response - * @return ETrue if found, else EFalse - */ - TBool BrowseCreateObjectL(const TDesC8& aResponse ) ; - - /** - * Register session that is interested of this resolver - * - * @param aSession session - */ - void RegisterSession(CUpnpAVCPEngineSession* aSession); - /** - * Unregister session that is not interested of this resolver - * - * @param aSession session - * @return number of session still being interested - */ - TInt UnregisterSession(CUpnpAVCPEngineSession* aSession); - /** - * Lock resolver to not accept resets as a result of state variable changes - * Reset will be postpone until unlock method is invoked - * - */ - void LockReset(); - /** - * Unlock reset. - * If between lock-unlock operation occurs state variable change, - * it'll reset all entries. - */ - void UnlockReset(); - private: - - /** - * C++ default constructor. - */ - CUpnpPathResolver(CUpnpAVCPManager& aManager); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(const TDesC8& aUUID); - /** - * Parse XML given as parameter and return DOM tree - * - * @param aXml buffer with XML - * @return DOM document - */ - RXmlEngDocument ParseXmlL(const TDesC8& aXml); - /** - * Get prefer resource element - * - * @param aElements array of elements - * @return chosen one - */ - TXmlEngElement GetPreferResourceL(const RArray& aElements); - /** - * Get first resource element with import URI - * - * @param aElements array of elements - * @param aImportURI if found - * @return chosen one - */ - TXmlEngElement GetResourceWithImportURIL(const RArray& aElements, TPtrC8& aImportURI); - - private: // Data - // last known system id (statevariable of CDS) - TInt iSystemId; - // UDN of MS - HBufC8* iUUID; - // manager - CUpnpAVCPManager& iManager; - // array of path elements - RPointerArray iPathElements; - // array of resolver's handlers - RPointerArray iResolveHandlers; - // array of session being interested of this resolver - RPointerArray iAVCPSessions; - // indicate whether path resolver is reseted to remove all entries - // when state variable changes - TBool iLocked; - // indicate whether entries are up-to-date - TBool iUptodate; - - RXmlEngDOMImplementation iDOMImpl; - }; - -#endif // C_CUPNPPATHRESOLVER_H - -// End of File