contentmgmt/contentaccessfwfordrm/source/caf/resolver.h
changeset 8 35751d3474b7
parent 0 2c201484c85f
child 15 da2ae96f639b
--- 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 <e32std.h>
-#include <ecom/ecom.h>
-#include <caf/caftypes.h>
-
-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<TPtrC8>& 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<TPtrC8>& 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<TPtrC8> iSupplierMimeTypes;
-			RArray<TPtrC8> iConsumerMimeTypes;
-	
-			// Array of agentInfos (not including F32 agent)
-			RPointerArray <CAgentInfo> 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 <e32std.h>
+#include <ecom/ecom.h>
+#include <caf/caftypes.h>
+
+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<TPtrC8>& 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<TPtrC8>& 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<TPtrC8> iSupplierMimeTypes;
+			RArray<TPtrC8> iConsumerMimeTypes;
+	
+			// Array of agentInfos (not including F32 agent)
+			RPointerArray <CAgentInfo> 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__ */
+