diff -r 675a964f4eb5 -r 35751d3474b7 contentmgmt/contentaccessfwfordrm/source/caf/resolver.h --- a/contentmgmt/contentaccessfwfordrm/source/caf/resolver.h Tue Jul 21 01:04:32 2009 +0100 +++ b/contentmgmt/contentaccessfwfordrm/source/caf/resolver.h Thu Sep 10 14:01:51 2009 +0300 @@ -1,231 +1,230 @@ -/* -* 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 "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: -* -*/ - - - - -/** - @file - @internalComponent - @released -*/ - - -#ifndef __RESOLVER_H__ -#define __RESOLVER_H__ - -#include -#include -#include - -namespace ContentAccess - { - const TUid KF32AgentImplUid = { 0x101FC2CF }; - - class CAgentInfo; - - /** - Used to identify the Content Access Agent who handles a particular file. - - CAgentResolver builds an array of CAgentInfo objects. Each CAgentInfo object - holds metadata related to a particular agent implementation. - - This class resolves: - - Content to the Agent which manages it - - Supplier mime-types to the agent which imports files with that mime type. - - @internalComponent - @released - */ - class CAgentResolver : public CActive - { - public: - /** Constructs a new CAgentResolver and puts it on the cleanup stack - * @param aDynamicAgentUpdate ETrue if the CAgentResolver should update its list of agents when new agents appear. A CActiveScheduler must already be running when ETrue is supplied - * @leave KErrCANoAgent If no F32 agent was found - */ - IMPORT_C static CAgentResolver* NewLC(const TBool aDynamicAgentUpdate); - - /** Constructs a new CAgentResolver - * @param aDynamicAgentUpdate ETrue if the CAgentResolver should update its list of agents when new agents appear. A CActiveScheduler must already be running when ETrue is supplied - * @leave KErrCANoAgent If no F32 agent was found - */ - IMPORT_C static CAgentResolver* NewL(const TBool aDynamicAgentUpdate); - virtual ~CAgentResolver(); - - /** Finds the agent that handles the given supplier MIME type. - - @param aMimeType MIME type from the supplier application. - @return The CAgentInfo object associated with the agent that handles files with this MIME type. - - @leave KErrCANoAgent If no CA agent supports the given MIME type. - */ - CAgentInfo& ResolveSupplierMimeL(const TDesC8& aMimeType) const; - - /** Finds the agent that handles the given consumer MIME type. - - @note Planning to remove this from the CAF API - - @param aMimeType MIME type of the file - @return The CAgentInfo object associated with the agent that handles files with this MIME type. - */ - CAgentInfo& ResolveConsumerMime(const TDesC8& aMimeType) const; - - /** Finds the agent that handles a file. - - @param aFile Handle of the file to be resolved. - @return The CAgentInfo object associated with the agent that will handle this file. - */ - CAgentInfo& ResolveFileL(RFile& aFile) const; - - /** Finds the agent that handles a file and returns the actual URI of the content. - - If the aUri is of the form "c:\\private\\agent_name\\" - it will be translated to the form "c:\\private\\SID\\" in - aActualUri. Otherwise the aUri is just copied to aActualUri - - @param aUri Location of file to be resolved. - @param aActualUri The actual location of the file - @param aShareMode The file sharing mode to be used with this file - @return The CAgentInfo object associated with the agent that will handle this file. - */ - CAgentInfo& ResolveFileL(const TDesC& aUri, TDes& aActualUri, TContentShareMode aShareMode = EContentShareReadOnly) const; - - /** Find the agent who owns a directory - - This function also maps a path from the agent directory name - to it's actual name in the file system. - - ie. For example if an agent "x" has files stored in a private server directory - "c:\\private\\12345678\\" - - The file appear as "c:\\private\\x\\" to applications using CAF. This function - converts "c:\\private\\x\\" back to "c:\\private\\12345678\\" - - @param aPath The path in the form c:\\private\\agent_name\\... - @param aActualPath The path in the form c:\\private\\SID\\... - @param aThePrivateDir to ETrue if the directory is just "\\private\\" - @return The Uid of the agent who owns the directory - */ - TUid ResolveDirectory(const TDesC& aPath, TDes& aActualPath, TBool& aThePrivateDir) const; - - /** Converts a filename containing the agent SID to the filename containing the agent name. - @param aFileName The filename in the form "c:\\private\\12345678\\" - @return A buffer to the new filename in the form "c:\\private\\agent_name\\" - */ - HBufC* ConvertAgentFileNameL(const TDesC& aFileName) const; - - /** Determines the MIME types of the a file and the mime type of its contents. - - This function should only be used by the CAF recogizer DLL. - - @param aName The file name/URI to be investigated. - @param aBuffer A buffer containing bytes from the start of the file. - @param aFileMimeType If the file is recognized this will be populated with - the mime type of the file. - @param aContentMimeType If the file is recognized this will be populated with the mime type of the content object within the file. - - @return ETrue if the file is recognized by content access agent - @return EFalse if the file is not recognized by a content access agent - */ - IMPORT_C TBool DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer, TDes8& aFileMimeType, TDes8& aContentMimeType); - - /** Gets the preferred buffer size for recognizing files using the RecognizeFile() function. - - This function should only be used by the CAF recogizer DLL. - - @return The largest preferred buffer nominated by any agent for recognizing files using the the DoRecognize() function. - */ - IMPORT_C TInt PreferredBufferSize(); - - /** Accessor for the SupplierMimeTypes array. - * - * @return An array of supplier MIME type supported by CAF agents. - */ - IMPORT_C const RArray& SupplierMimeTypes() const; - - /** Accessor for the ConsumerMimeTypes array. - * - * @note Planning to remove this from the CAF API - * - * @return An array of consumer MIME types supported by CAF agents. - */ - IMPORT_C const RArray& ConsumerMimeTypes() const; - - /** Find an agent by it's Uid */ - CAgentInfo& AgentInfoL(const TUid& aUid) const; - - /** Find an agent by it's name */ - CAgentInfo& AgentInfoL(const TDesC& aAgentName) const; - - /** Reference an agent in the iAgentInfos array by index */ - CAgentInfo& AgentInfo(TInt aIndex) const; - - /** The number of agents, excluding the F32Agent */ - TInt AgentInfoCount() const; - - /** The default F32 agent */ - TUid DefaultAgentUid() const; - - private: - // From CActive, used for dynamically updating the list of content access agents - virtual void DoCancel(); - virtual void RunL(); - - private: - CAgentResolver(const TBool aDynamicAgentUpdate); - - /** Second phase constructor for CAgentResolver - */ - void ConstructL(); - - - /** Builds a list of all the Content Access Agents. */ - void BuildListOfAgentsL(); - - /** Add an agent to the list of agents */ - void AddAgentL(const CImplementationInformation& aImplInfo); - - /** Resets the list. */ - void DestroyListOfAgents(); - - /** Is this the F32 Agent - @param aAgentInfo The agentinfo representing the agent - @return ETrue if it is the F32Agent, EFalse otherwise - */ - TBool IsF32Agent(CAgentInfo& aAgentInfo); - - // Cleanup item - static void CleanImplArray(TAny* aArray); - - private: - const TBool iDynamicAgentUpdate; - REComSession* iEcomSession; - - RArray iSupplierMimeTypes; - RArray iConsumerMimeTypes; - - // Array of agentInfos (not including F32 agent) - RPointerArray iAgentInfos; - - // This points to the agent which handles content if it is not - // recognised by any other agent (this should be the F32Agent) - CAgentInfo* iDefaultAgent; - }; - - } // namespace ContentAccess -#endif /* __RESOLVER_H__ */ +/* +* 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 "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: +* +*/ + + +/** + @file + @internalComponent + @released +*/ + + +#ifndef __RESOLVER_H__ +#define __RESOLVER_H__ + +#include +#include +#include + +namespace ContentAccess + { + const TUid KF32AgentImplUid = { 0x101FC2CF }; + + class CAgentInfo; + + /** + Used to identify the Content Access Agent who handles a particular file. + + CAgentResolver builds an array of CAgentInfo objects. Each CAgentInfo object + holds metadata related to a particular agent implementation. + + This class resolves: + - Content to the Agent which manages it + - Supplier mime-types to the agent which imports files with that mime type. + + @internalComponent + @released + */ + class CAgentResolver : public CActive + { + public: + /** Constructs a new CAgentResolver and puts it on the cleanup stack + * @param aDynamicAgentUpdate ETrue if the CAgentResolver should update its list of agents when new agents appear. A CActiveScheduler must already be running when ETrue is supplied + * @leave KErrCANoAgent If no F32 agent was found + */ + IMPORT_C static CAgentResolver* NewLC(const TBool aDynamicAgentUpdate); + + /** Constructs a new CAgentResolver + * @param aDynamicAgentUpdate ETrue if the CAgentResolver should update its list of agents when new agents appear. A CActiveScheduler must already be running when ETrue is supplied + * @leave KErrCANoAgent If no F32 agent was found + */ + IMPORT_C static CAgentResolver* NewL(const TBool aDynamicAgentUpdate); + virtual ~CAgentResolver(); + + /** Finds the agent that handles the given supplier MIME type. + + @param aMimeType MIME type from the supplier application. + @return The CAgentInfo object associated with the agent that handles files with this MIME type. + + @leave KErrCANoAgent If no CA agent supports the given MIME type. + */ + CAgentInfo& ResolveSupplierMimeL(const TDesC8& aMimeType) const; + + /** Finds the agent that handles the given consumer MIME type. + + @note Planning to remove this from the CAF API + + @param aMimeType MIME type of the file + @return The CAgentInfo object associated with the agent that handles files with this MIME type. + */ + CAgentInfo& ResolveConsumerMime(const TDesC8& aMimeType) const; + + /** Finds the agent that handles a file. + + @param aFile Handle of the file to be resolved. + @return The CAgentInfo object associated with the agent that will handle this file. + */ + CAgentInfo& ResolveFileL(RFile& aFile) const; + + /** Finds the agent that handles a file and returns the actual URI of the content. + + If the aUri is of the form "c:\\private\\agent_name\\" + it will be translated to the form "c:\\private\\SID\\" in + aActualUri. Otherwise the aUri is just copied to aActualUri + + @param aUri Location of file to be resolved. + @param aActualUri The actual location of the file + @param aShareMode The file sharing mode to be used with this file + @return The CAgentInfo object associated with the agent that will handle this file. + */ + CAgentInfo& ResolveFileL(const TDesC& aUri, TDes& aActualUri, TContentShareMode aShareMode = EContentShareReadOnly) const; + + /** Find the agent who owns a directory + + This function also maps a path from the agent directory name + to it's actual name in the file system. + + ie. For example if an agent "x" has files stored in a private server directory + "c:\\private\\12345678\\" + + The file appear as "c:\\private\\x\\" to applications using CAF. This function + converts "c:\\private\\x\\" back to "c:\\private\\12345678\\" + + @param aPath The path in the form c:\\private\\agent_name\\... + @param aActualPath The path in the form c:\\private\\SID\\... + @param aThePrivateDir to ETrue if the directory is just "\\private\\" + @return The Uid of the agent who owns the directory + */ + TUid ResolveDirectory(const TDesC& aPath, TDes& aActualPath, TBool& aThePrivateDir) const; + + /** Converts a filename containing the agent SID to the filename containing the agent name. + @param aFileName The filename in the form "c:\\private\\12345678\\" + @return A buffer to the new filename in the form "c:\\private\\agent_name\\" + */ + HBufC* ConvertAgentFileNameL(const TDesC& aFileName) const; + + /** Determines the MIME types of the a file and the mime type of its contents. + + This function should only be used by the CAF recogizer DLL. + + @param aName The file name/URI to be investigated. + @param aBuffer A buffer containing bytes from the start of the file. + @param aFileMimeType If the file is recognized this will be populated with + the mime type of the file. + @param aContentMimeType If the file is recognized this will be populated with the mime type of the content object within the file. + + @return ETrue if the file is recognized by content access agent + @return EFalse if the file is not recognized by a content access agent + */ + IMPORT_C TBool DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer, TDes8& aFileMimeType, TDes8& aContentMimeType); + + /** Gets the preferred buffer size for recognizing files using the RecognizeFile() function. + + This function should only be used by the CAF recogizer DLL. + + @return The largest preferred buffer nominated by any agent for recognizing files using the the DoRecognize() function. + */ + IMPORT_C TInt PreferredBufferSize(); + + /** Accessor for the SupplierMimeTypes array. + * + * @return An array of supplier MIME type supported by CAF agents. + */ + IMPORT_C const RArray& SupplierMimeTypes() const; + + /** Accessor for the ConsumerMimeTypes array. + * + * @note Planning to remove this from the CAF API + * + * @return An array of consumer MIME types supported by CAF agents. + */ + IMPORT_C const RArray& ConsumerMimeTypes() const; + + /** Find an agent by it's Uid */ + CAgentInfo& AgentInfoL(const TUid& aUid) const; + + /** Find an agent by it's name */ + CAgentInfo& AgentInfoL(const TDesC& aAgentName) const; + + /** Reference an agent in the iAgentInfos array by index */ + CAgentInfo& AgentInfo(TInt aIndex) const; + + /** The number of agents, excluding the F32Agent */ + TInt AgentInfoCount() const; + + /** The default F32 agent */ + TUid DefaultAgentUid() const; + + private: + // From CActive, used for dynamically updating the list of content access agents + virtual void DoCancel(); + virtual void RunL(); + + private: + CAgentResolver(const TBool aDynamicAgentUpdate); + + /** Second phase constructor for CAgentResolver + */ + void ConstructL(); + + + /** Builds a list of all the Content Access Agents. */ + void BuildListOfAgentsL(); + + /** Add an agent to the list of agents */ + void AddAgentL(const CImplementationInformation& aImplInfo); + + /** Resets the list. */ + void DestroyListOfAgents(); + + /** Is this the F32 Agent + @param aAgentInfo The agentinfo representing the agent + @return ETrue if it is the F32Agent, EFalse otherwise + */ + TBool IsF32Agent(CAgentInfo& aAgentInfo); + + // Cleanup item + static void CleanImplArray(TAny* aArray); + + private: + const TBool iDynamicAgentUpdate; + REComSession* iEcomSession; + + RArray iSupplierMimeTypes; + RArray iConsumerMimeTypes; + + // Array of agentInfos (not including F32 agent) + RPointerArray iAgentInfos; + + // This points to the agent which handles content if it is not + // recognised by any other agent (this should be the F32Agent) + CAgentInfo* iDefaultAgent; + }; + + } // namespace ContentAccess +#endif /* __RESOLVER_H__ */ +