--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/source/caf/agentinfo.h Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,183 @@
+/*
+* 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 __AGENTINFO_H__
+#define __AGENTINFO_H__
+
+#include <e32base.h>
+
+class CImplementationInformation;
+
+#include <caf/agent.h>
+
+namespace ContentAccess
+ {
+ class CAgentFactory;
+ class CAgentManager;
+
+ /**
+ Holds information about a Content Access Agent implementation.
+
+ The metadata is supplied in the agents resource file so the information can be
+ obtained without the need to construct the agent.
+
+ The AgentFactoryL() function is used by other CAF classes to access the
+ agent's CAgentFactory implementation.
+
+ @internalComponent
+ @released
+ */
+ class CAgentInfo : public CBase
+ {
+ public:
+ /**
+ Constructs a new CAgentInfo object from an ECOM CImplementationInfo.
+
+ @param aImplInfo An ECOM Implementation from REComSession::ListImplementationsL().
+ @return A new instance of a CAgentInfo object.
+ */
+ static CAgentInfo* NewLC(const CImplementationInformation& aImplInfo);
+
+ virtual ~CAgentInfo();
+
+ /**
+ Determines whether this agent recognizes the supplier MIME type.
+
+ @param aSupplierMime The supplier MIME type to check.
+ @return ETrue, if the MIME type is a supported supplier MIME type.
+ */
+ TBool IsSupportedSupplier(const TDesC8& aSupplierMime) const;
+
+ /**
+ Determines whether this agent recognizes the consumer MIME type.
+
+ @note Scheduled to be removed from the CAF API
+ recognizer uses MIME types based upon the content type, not the mime type
+ of the file itself. There will be no Consumer MIME types, only modified
+ content types.
+
+ @param aConsumerMime The consumer mime type to check.
+ @return ETrue, if the MIME type is a supported consumer MIME type.
+ */
+ TBool IsSupportedConsumer(const TDesC8& aConsumerMime) const;
+
+ /**
+ * Exposes the array of supplier MIME types supported by this agent.
+ *
+ * @return The array of supplier MIME types.
+ */
+ const RPointerArray<HBufC8>& SupplierMimeTypes() const;
+
+ /**
+ Exposes the array of consumer MIME types supported by this agent.
+
+ @note Scheduled to be removed from the CAF API
+ recognizer uses MIME types based upon the content type, not the
+ mime type of the file itself. There will be no Consumer mime types,
+ only modified content types.
+
+ @return A reference to the array of consumer mime types.
+ */
+ const RPointerArray<HBufC8>& ConsumerMimeTypes() const;
+
+ /**
+ * Gets the preferred buffer size for this agent to recognize
+ * DRM files with the ContentAccess::CAgentResolver::DoRecognize() function.
+ *
+ * @return The preferred buffer size.
+ */
+ TInt PreferredBufferSize() const;
+
+ /** The private server directory managed by this agent
+
+ This function returns the directory under C:\\private\\ used by this
+ agent. This is specified in the agents resource file in the opaque_data
+ field.
+
+ If the agent does not use a private directory the return value will be
+ KNullDesC()
+
+ @return The directory name
+ */
+ const TDesC& PrivateDirectoryName() const;
+
+ /** The agent
+
+ @return A reference to this agent
+ */
+ TAgent& Agent();
+
+ /**
+ Accessor for agent factory.
+
+ Allows the factory to be constructed once and used many times.
+ DOES NOT transfer ownership of the CAgentFactory to the caller.
+
+ @return The CAgentFactory for this particular agent
+ */
+ CAgentFactory& AgentFactoryL();
+
+ /**
+ Accessor to the agent manager.
+
+ The agent manager is stateless and this method allows it to be
+ constructed once and used several times. DOES NOT transfer ownership
+ of the CAgentManager to the caller.
+
+ @return The CAgentManager for this particular agent
+ */
+ CAgentManager& AgentManagerL();
+
+
+ private:
+ CAgentInfo();
+ void ConstructL(const CImplementationInformation& aImplInfo);
+
+ // Helper function to parse MIME types of the form:
+ // <mime1>,<mime2>,<mime3>
+ void ParseMimeTypesL(const TDesC8& aBuf, RPointerArray<HBufC8>& aMimeTypes);
+
+ // Helper to add descriptor to RPointerArray
+ void AddToArrayL(const TDesC8& aElement, RPointerArray<HBufC8>& aArray);
+
+ private:
+ TInt iPreferredBufferSize;
+ RPointerArray<HBufC8> iSupplierMimeTypes;
+ RPointerArray<HBufC8> iConsumerMimeTypes;
+
+ CAgentFactory* iAgentFactory;
+ CAgentManager* iAgentManager;
+
+ // Holds the agent name and Implementation UID
+ TAgent iAgent;
+
+ // Agent private directory is a SID
+ TBuf <KMaxSIDLength> iPrivateDirectoryName;
+ };
+ }
+
+#endif