Content Access Framework: Content Access Framework

  • Main Page
  • Namespaces
  • Classes
  • Files
  • Related Pages

Content Access Framework

Contents

  • Introduction
  • Architecture
  • Consumer API (Browsing and reading from content files)
  • Files containing multiple content objects
  • Content Object Attributes
  • Importing files into the Content Access Framework
  • Managing files with the Content Access Framework
  • Managing CAF Agents
  • Rights Manager API
  • Handling data corruption
  • CAF and the User Interface
  • How to write an Apparc recognizer for the Content Access Framework
  • Content Access Agent ECOM Resource File
  • Backup and Restore
  • Example source code using CAF
  • Making an asynchronous SendReceive() call in an agent plugin
  • Considerations for Licensees using CAF
  • CAF v2.19 Release Notes

Version:
2.19
Date:
28th February 2007
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: File Index

  • Files
  • Related Pages
  • File List
  • File Members

Content Access Framework File List

Here is a list of all files with brief descriptions:
agent.h [code] |
agentfactory.h [code] |
agentinterface.h [code] |
attribute.h [code] |
attributeset.h [code] |
bitset.h [code] |
caf.h [code] | This contains all definitions required by clients accessing the Content Access Framework
caferr.h [code] | This contains error code definitions required by clients accessing the Content Access Framework
cafmimeheader.h [code] |
cafpanic.h [code] |
caftypes.h [code] | This file contains enumerations and constants used throughout the content access framework
content.h [code] |
data.h [code] |
dirstreamable.h [code] |
EmbeddedObject.h [code] |
f32agentui.h [code] | This defines an interface used by the F32 Agent to display information on the screen
importfile.h [code] |
manager.h [code] |
metadata.h [code] |
metadataarray.h [code] |
patchdata.h [code] |
rightsinfo.h [code] |
rightsmanager.h [code] |
StreamablePtrArray.h [code] |
StreamablePtrArray.inl |
stringattributeset.h [code] |
supplier.h [code] |
supplieroutputfile.h [code] |
virtualpath.h [code] |
virtualpathptr.h [code] |
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: agent.h File Reference

  • File List
  • File Members

agent.h File Reference

#include <e32base.h>

Include dependency graph for agent.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::TAgent
Represents the name of a single CAF agent. More...

Variables

const TInt | KMaxAgentNameLength = KMaxFileName
Maximum length of an Agent name, a longer name will be truncated.
const TInt | KMaxSIDLength = 8

Detailed Description

Interface: publishedPartner
Interface: released

Variable Documentation

const TInt KMaxAgentNameLength = KMaxFileName

Maximum length of an Agent name, a longer name will be truncated.

const TInt KMaxSIDLength = 8

Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: agentfactory.h File Reference

  • File List
  • File Members

agentfactory.h File Reference

#include <e32base.h>
#include <ecom/ecom.h>
#include <caf/caftypes.h>

Include dependency graph for agentfactory.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CAgentFactory
Abstract interface handed out by an ECOM agent implementation by REComSession::CreateImplementationL(). More...

Variables

const TUid | ContentAccess::KCAAgentInterfaceUid = {0x10204740}
The CAF 2.0 agent interface UID.

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: agentinterface.h File Reference

  • File List
  • File Members

agentinterface.h File Reference

#include <e32base.h>
#include <ecom/ecom.h>
#include <caf/caftypes.h>
#include <caf/streamableptrarray.h>
#include <caf/caferr.h>

Include dependency graph for agentinterface.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CAgentData
Defines the agent interface for consumer operations such as reading and seeking within a content object in a file. More...
class | ContentAccess::CAgentContent
Defines the agent interface allowing clients to browse the objects within a file. More...
class | ContentAccess::CAgentImportFile
Defines the interface for importing files into a Content access agent. More...
class | ContentAccess::CAgentManager
Defines the agent interface for manager operations. More...
class | ContentAccess::CAgentRightsManager
Manages and retrieves rights objects from an agent. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: attribute.h File Reference

  • File List
  • File Members

attribute.h File Reference

Go to the source code of this file.

Detailed Description

Interface: publishedPartner
Interface: deprecated
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: attributeset.h File Reference

  • File List
  • File Members

attributeset.h File Reference

#include <e32base.h>
#include <caf/caftypes.h>

Include dependency graph for attributeset.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::RAttributeSet
Holds the values of a predefined set of attributes based upon ContentAccess::TAttribute. More...
class | ContentAccess::RAttributeSet::TAttributeValue
Holds the value of an attribute along with any error encountered while retrieving the attribute.

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: bitset.h File Reference

  • File List
  • File Members

bitset.h File Reference

Go to the source code of this file.

Detailed Description

Interface: publishedPartner
Interface: deprecated
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: caf.h File Reference

  • File List
  • File Members

caf.h File Reference

This contains all definitions required by clients accessing the Content Access Framework. More...

#include <e32std.h>
#include <caf/caferr.h>
#include <caf/cafpanic.h>
#include <caf/caftypes.h>
#include <caf/agent.h>
#include <caf/content.h>
#include <caf/data.h>
#include <caf/manager.h>
#include <caf/supplier.h>
#include <caf/importfile.h>
#include <caf/rightsmanager.h>
#include <caf/supplieroutputfile.h>
#include <caf/metadata.h>
#include <caf/metadataarray.h>
#include <caf/virtualpath.h>
#include <caf/virtualpathptr.h>
#include <caf/embeddedobject.h>
#include <caf/attributeset.h>
#include <caf/rightsinfo.h>
#include <caf/stringattributeset.h>
#include <caf/streamableptrarray.h>
#include <caf/dirstreamable.h>
#include <caf/attribute.h>
#include <caf/cafmimeheader.h>

Include dependency graph for caf.h:

Go to the source code of this file.

Detailed Description

This contains all definitions required by clients accessing the Content Access Framework.

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: caferr.h File Reference

  • File List
  • File Members

caferr.h File Reference

This contains error code definitions required by clients accessing the Content Access Framework. More...

#include <e32std.h>

Include dependency graph for caferr.h:

Go to the source code of this file.

Variables

const TInt | KErrCA_UpperLimit = -17450
This is the upper limit of the CAF error code range.
const TInt | KErrCA_LowerLimit = -17549
This is the lower limit of the CAF error code range.
const TInt | KErrCANotSupported = -17450
Agent does not support the requested capability.
const TInt | KErrCANoPermission = -17451
Rights evaluation failed for the supplied intent.
const TInt | KErrCANoRights = -17452
No rights were available for evaluation.
const TInt | KErrCANoAgent = -17453
The Agent required is not present.
const TInt | KErrCAOutOfRange = -17454
Values specified are out of range.
const TInt | KErrCAPendingRights = -17455
The rights were not available but are 'expected'.
const TInt | KErrCASizeNotDetermined = -17456
A request to get the content size failed because the agent was unable to determine it.
const TInt | KErrCANewFileHandleRequired = -17457
The function failed because the agent needs the client to provide another file handle before the import can continue.
const TInt | KErrCACorruptRights = -17458
The rights object failed an integrity check.
const TInt | KErrCACorruptContent = -17459
The content object failed an integrity check.

Detailed Description

This contains error code definitions required by clients accessing the Content Access Framework.

All CAF error codes lie within the range KErrCA_LowerLimit to KErrCA_UpperLimit inclusive.

Interface: publishedPartner
Interface: released

Variable Documentation

const TInt KErrCA_LowerLimit = -17549

This is the lower limit of the CAF error code range.

Example usage:

if (KErrCA_LowerLimit <= err && err <= KErrCA_UpperLimit)
        {
        // handle CAF-specific error
        }

const TInt KErrCA_UpperLimit = -17450

This is the upper limit of the CAF error code range.

Example usage:

if (KErrCA_LowerLimit <= err && err <= KErrCA_UpperLimit)
        {
        // handle CAF-specific error
        }

const TInt KErrCACorruptContent = -17459

The content object failed an integrity check.

This error is returned when a client attempts an operation which requires accessing a content object.

const TInt KErrCACorruptRights = -17458

The rights object failed an integrity check.

This error is returned when a client attempts an operation which requires accessing a rights object.

const TInt KErrCANewFileHandleRequired = -17457

The function failed because the agent needs the client to provide another file handle before the import can continue.

const TInt KErrCANoAgent = -17453

The Agent required is not present.

This may occur if content 'belongs' to an agent that is no longer available on the device.

const TInt KErrCANoPermission = -17451

Rights evaluation failed for the supplied intent.

This implies that rights were available, but their evaluation, in the context of supplied intent, failed.

const TInt KErrCANoRights = -17452

No rights were available for evaluation.

A number of causes may generate this error: Perhaps the rights were removed or lost during a separate delivery

const TInt KErrCANotSupported = -17450

Agent does not support the requested capability.

const TInt KErrCAOutOfRange = -17454

Values specified are out of range.

const TInt KErrCAPendingRights = -17455

The rights were not available but are 'expected'.

Will only be returned if the agent supports this capability.

const TInt KErrCASizeNotDetermined = -17456

A request to get the content size failed because the agent was unable to determine it.

This error may occur on circumstances where, say, the content is streamed over HTTP.

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: cafmimeheader.h File Reference

  • File List
  • File Members

cafmimeheader.h File Reference

Go to the source code of this file.

Detailed Description

Interface: publishedPartner
Interface: deprecated
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: cafpanic.h File Reference

  • File List
  • File Members

cafpanic.h File Reference

#include <e32base.h>

Include dependency graph for cafpanic.h:

Go to the source code of this file.

Enumerations

enum TCafPanics {
ECafPanicDuplicateF32Agent = 1, ECafPanicNoF32Agent = 2,
ECafPanicF32AgentImportNotSupported = 3, ECafPanicF32AgentRightManagerNotSupported = 4,
ECafPanicF32AgentManagementInfoNotSupported = 5, ECafPanicContentIteratorThreadPanic = 6,
ECafPanicContentIteratorUnknownRequest = 7, ECafPanicF32AgentPrepareHTTPHeadersNotSupported = 8
}
Panic codes generated by the Content Access Framework. More...

Functions

_LIT (KCafPanicString,"CAF")

Detailed Description

Interface: publishedPartner
Interface: released

Enumeration Type Documentation

enum TCafPanics

Panic codes generated by the Content Access Framework.

Enumerator:
ECafPanicDuplicateF32Agent | There appears to be more than one default agent.
ECafPanicNoF32Agent | No default (F32) agent was found.
ECafPanicF32AgentImportNotSupported | CAF should never ask the F32 agent to import files.
ECafPanicF32AgentRightManagerNotSupported | CAF should never ask the F32 agent to invoke a rights manager.
ECafPanicF32AgentManagementInfoNotSupported | CAF should never ask the F32 agent to display an agent management dialog for itself.
ECafPanicContentIteratorThreadPanic | The content iterator thread panic'd.
ECafPanicContentIteratorUnknownRequest | The content iterator was asked to perform an unknown function.
ECafPanicF32AgentPrepareHTTPHeadersNotSupported | CAF should never ask the F32 agent for HTTP download headers.

Function Documentation

_LIT | ( | KCafPanicString | ,
 |  | "CAF" |
 | ) |

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: caftypes.h File Reference

  • File List
  • File Members

caftypes.h File Reference

This file contains enumerations and constants used throughout the content access framework. More...

#include <e32std.h>

Include dependency graph for caftypes.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Enumerations

enum ContentAccess::TContentShareMode {
ContentAccess::EContentShareReadOnly = 0, ContentAccess::EContentShareReadWrite = 1,
ContentAccess::EContentShareExclusive = 2
}
Defines the share modes available when opening content for consumption. More...
enum ContentAccess::TIntent {
ContentAccess::EPeek = 0, ContentAccess::EPlay = 1,
ContentAccess::EView = 2, ContentAccess::EExecute = 3,
ContentAccess::EPrint = 4, ContentAccess::EPause = 5,
ContentAccess::EContinue = 6, ContentAccess::EStop = 7,
ContentAccess::EUnknown = 8, ContentAccess::EInstall = 9
}
Set of valid reader intents when opening content. More...
enum | ContentAccess::TOutputType { ContentAccess::EContent = 0, ContentAccess::EReceipt = 1 }
Defines the types of output file produced when importing files into the Content Access Famework using CImportFile Remember to update any DRM agents if new values are added here. More...
enum ContentAccess::TImportStatus {
ContentAccess::EInProgress, ContentAccess::EWaitingForNewOutputFile,
ContentAccess::EComplete, ContentAccess::EFailed,
ContentAccess::EUnsupportedMedia
}
The agent status codes reported when importing a file with the supplier API Remember to update any DRM agents if new values are added here. More...
enum ContentAccess::TAttribute {
ContentAccess::EIsProtected = 0, ContentAccess::EIsForwardable = 1,
ContentAccess::EIsModifyable = 2, ContentAccess::EIsCopyable = 3,
ContentAccess::ECanPlay = 4, ContentAccess::ECanPrint = 5,
ContentAccess::ECanExecute = 6, ContentAccess::ECanView = 7,
ContentAccess::ERightsNone = 8, ContentAccess::ERightsPending = 9,
ContentAccess::ERightsHaveExpired = 10, ContentAccess::EPreviewAvailable = 11,
ContentAccess::EContentCDataInUse = 12, ContentAccess::ECanRewind = 13,
ContentAccess::ECopyPaste = 14, ContentAccess::ERightsConsumable = 15,
ContentAccess::ERightsStateless = 16, ContentAccess::ECanMove = 17,
ContentAccess::ECanRename = 18, ContentAccess::ECanAutomaticConsume = 19,
ContentAccess::EContentVersion = 20, ContentAccess::EAgentSpecificAttributeBase = 32768
}
The list of generic content object attributes. More...
enum ContentAccess::TStringAttribute {
ContentAccess::EDescription = 0, ContentAccess::EMimeType = 1,
ContentAccess::ETitle = 2, ContentAccess::EAuthor = 3,
ContentAccess::EIconURI = 4, ContentAccess::EPreviewURI = 5,
ContentAccess::EContentURI = 6, ContentAccess::EContentID = 7,
ContentAccess::EInfoURL = 8, ContentAccess::EPendingRightsETA = 9,
ContentAccess::ETransactionID = 10, ContentAccess::EContentLocation = 11,
ContentAccess::ERightsIssuerURI = 12, ContentAccess::EAgentSpecificStringAttributeBase = 32768
}
The list of generic string attributes. More...
enum | ContentAccess::TEventMask { ContentAccess::ERightsAvailable = 1, ContentAccess::ERightsExpired = 2 }
Events relating to DRM objects, powers of 2 so they can be OR'd Remember to update any DRM agents if new values are added here. More...
enum ContentAccess::TEmbeddedType {
ContentAccess::EContainerObject = 0, ContentAccess::EContentObject = 1,
ContentAccess::EAgentSpecificObject = 2
}
The type of object inside a DRM file Remember to update any DRM agents if new values are added here. More...
enum ContentAccess::TDisplayInfo {
ContentAccess::EFileProperties = 0, ContentAccess::EFileAndRights = 1,
ContentAccess::ERights = 2
}
Type of information to display Remember to update any DRM agents if new values are added here. More...
enum | ContentAccess::TRightsTypeMask { ContentAccess::ERightsTypeConsumable = 1, ContentAccess::ERightsTypeStateless = 2 }
The type of rights object. More...
enum ContentAccess::TRightsStatus {
ContentAccess::ERightsStatusNone = 0, ContentAccess::ERightsStatusValid = 1,
ContentAccess::ERightsStatusExpired = 2, ContentAccess::ERightsStatusPending = 3
}
State of a rights object Remember to update any DRM agents if new values are added here. More...
enum ContentAccess::TAgentProperty {
ContentAccess::EAgentPropertyBufferSize = 0, ContentAccess::EAgentPropertyAgentUI = 1,
ContentAccess::EAgentPropertyMultipleSequence = 2
}
Defines the properties that an application can set in an agent. More...

Functions

ContentAccess::_LIT (KDefaultContentObject,"DEFAULT")
The Unique Id that identifies the default content object within any file.

Variables

const TInt | ContentAccess::KMaxCafUniqueId = 1024
Maximum length of a content or container unique id.
const TInt | ContentAccess::KMaxCafContentName = 1024
Maximum length of a content object name.

Detailed Description

This file contains enumerations and constants used throughout the content access framework.

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: content.h File Reference

  • File List
  • File Members

content.h File Reference

#include <e32base.h>
#include <f32file.h>
#include <caf/caftypes.h>
#include <caf/agent.h>
#include <caf/streamableptrarray.h>
#include <caf/virtualpathptr.h>

Include dependency graph for content.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CContent
CContent allows applications to browse the content objects contained within a single file and construct a CData object for reading that content. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: data.h File Reference

  • File List
  • File Members

data.h File Reference

#include <e32base.h>
#include <f32file.h>
#include <caf/caftypes.h>

Include dependency graph for data.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CData
Allows clients to read data from a content object. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: dirstreamable.h File Reference

  • File List
  • File Members

dirstreamable.h File Reference

#include <f32file.h>
#include <s32strm.h>
#include <caf/caftypes.h>

Include dependency graph for dirstreamable.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CDirStreamable
Emulates the behavior of a CDir object with the addition of streaming. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: EmbeddedObject.h File Reference

  • File List
  • File Members

EmbeddedObject.h File Reference

#include <apmstd.h>
#include <caf/virtualpath.h>
#include <caf/caftypes.h>

Include dependency graph for EmbeddedObject.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CEmbeddedObject
Represents a content object embedded within a file The agent defined uniqueId field describes the location of the object within the file. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: f32agentui.h File Reference

  • File List
  • File Members

f32agentui.h File Reference

This defines an interface used by the F32 Agent to display information on the screen. More...

#include <e32base.h>

Include dependency graph for f32agentui.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CF32AgentUi
Interface that must be implemented in order for the F32 agent to display information on the screen. More...
class | ContentAccess::TF32AgentUiFactory
Factory function that creates the F32 Agent UI. More...

Detailed Description

This defines an interface used by the F32 Agent to display information on the screen.

The default implementation does nothing. Licensees wishing to allow the F32 agent to display information on the screen should replace this DLL with a DLL that does display information on screen.

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: importfile.h File Reference

  • File List
  • File Members

importfile.h File Reference

#include <e32base.h>
#include <f32file.h>
#include <caf/caftypes.h>

Include dependency graph for importfile.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CImportFile
Created by the CSupplier to import a file. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: manager.h File Reference

  • File List
  • File Members

manager.h File Reference

#include <e32base.h>
#include <f32file.h>
#include <caf/caftypes.h>
#include <caf/agent.h>

Include dependency graph for manager.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CManager
Manages files and content access agents. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: metadata.h File Reference

  • File List
  • File Members

metadata.h File Reference

#include <e32base.h>
#include <f32file.h>

Include dependency graph for metadata.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CMetaData
Stores a field and data pair for use in a supplier import operation. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: metadataarray.h File Reference

  • File List
  • File Members

metadataarray.h File Reference

#include <e32base.h>
#include <f32file.h>

Include dependency graph for metadataarray.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CMetaDataArray
Stores an array of CMetaData objects for use in a supplier import operation. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: patchdata.h File Reference

  • File List
  • File Members

patchdata.h File Reference

#include <e32base.h>

Include dependency graph for patchdata.h:

Go to the source code of this file.

Variables

IMPORT_C const TUint8 KCafLoadPostProductionAgents
This 8-bit variable is used in agent resolution.

Variable Documentation

IMPORT_C const TUint8 KCafLoadPostProductionAgents

This 8-bit variable is used in agent resolution.

It is used to override CAF's default resolution behaviour of only loading Content Access Agents (CAAs) from the ROM drive. Compile time value is 0 - default resolution behaviour. When non-zero CAF will load all CAA visible to the ECOM service regardless of the drive. In the emulator platform the default resolution behaviour is the same as when this variable is non-zero, therefore loading all CAAs.

This variable is changed at ROM build time using the patchdata obey keyword. See Symbian OS Developer Library documentation on how to patch DLL data exports.

Interface: publishedPartner
Interface: released

Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: rightsinfo.h File Reference

  • File List
  • File Members

rightsinfo.h File Reference

#include <e32base.h>
#include <caf/caftypes.h>

Include dependency graph for rightsinfo.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CRightsInfo
Rights class to store a summary description of the rights and a unique reference to the rights object within an Agent. More...
class | ContentAccess::MAgentRightsBase
Interface used by agents as a base class for their own rights objects. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: rightsmanager.h File Reference

  • File List
  • File Members

rightsmanager.h File Reference

#include <e32std.h>
#include <caf/caftypes.h>
#include <caf/streamableptrarray.h>

Include dependency graph for rightsmanager.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CRightsManager
Manages and retrieves rights objects from an agent. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: StreamablePtrArray.h File Reference

  • File List
  • File Members

StreamablePtrArray.h File Reference

#include <e32base.h>
#include <s32strm.h>
#include <caf/streamableptrarray.inl>

Include dependency graph for StreamablePtrArray.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::RStreamablePtrArray< T >
Template class used to store an array of pointers that can also write itself to a stream. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: StreamablePtrArray.inl File Reference

  • File List
  • File Members

StreamablePtrArray.inl File Reference

Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: stringattributeset.h File Reference

  • File List
  • File Members

stringattributeset.h File Reference

#include <e32base.h>
#include <caf/caftypes.h>

Include dependency graph for stringattributeset.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::RStringAttributeSet
Holds the values of a predefined set of attributes based upon ContentAccess::TStringAttribute. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: supplier.h File Reference

  • File List
  • File Members

supplier.h File Reference

#include <e32base.h>
#include <e32std.h>
#include <caf/caftypes.h>

Include dependency graph for supplier.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CSupplier
Used to import files using a content access agent. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: supplieroutputfile.h File Reference

  • File List
  • File Members

supplieroutputfile.h File Reference

#include <e32base.h>
#include <apmstd.h>
#include <caf/caftypes.h>

Include dependency graph for supplieroutputfile.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CSupplierOutputFile
Holds the details of an output file produced by CAF. More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: virtualpath.h File Reference

  • File List
  • File Members

virtualpath.h File Reference

#include <e32base.h>
#include <caf/virtualpathptr.h>

Include dependency graph for virtualpath.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::CVirtualPath
A virtual path describes the location of the file (URI) and the location of a content object within that file (Unique Id). More...

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: virtualpathptr.h File Reference

  • File List
  • File Members

virtualpathptr.h File Reference

#include <e32base.h>

Include dependency graph for virtualpathptr.h:

Go to the source code of this file.

Namespaces

namespace | ContentAccess

Classes

class | ContentAccess::TVirtualPathPtr
Identifies the location of a file and a particular content object inside it. More...

Functions

ContentAccess::_LIT (KCafVirtualPathSeparator,"|")
The character used to separate the URI from the UniqueId when the two are concatenated into a single descriptor.

Detailed Description

Interface: publishedPartner
Interface: released
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class List

  • Class List
  • Class Hierarchy
  • Class Members

Content Access Framework Class List

Here are the classes, structs, unions and interfaces with brief descriptions:
ContentAccess::CAgentContent | Defines the agent interface allowing clients to browse the objects within a file
ContentAccess::CAgentData | Defines the agent interface for consumer operations such as reading and seeking within a content object in a file
ContentAccess::CAgentFactory | Abstract interface handed out by an ECOM agent implementation by REComSession::CreateImplementationL()
ContentAccess::CAgentImportFile | Defines the interface for importing files into a Content access agent
ContentAccess::CAgentManager | Defines the agent interface for manager operations
ContentAccess::CAgentRightsManager | Manages and retrieves rights objects from an agent
ContentAccess::CContent | CContent allows applications to browse the content objects contained within a single file and construct a CData object for reading that content
ContentAccess::CData | Allows clients to read data from a content object
ContentAccess::CDirStreamable | Emulates the behavior of a CDir object with the addition of streaming
ContentAccess::CEmbeddedObject | Represents a content object embedded within a file The agent defined uniqueId field describes the location of the object within the file
ContentAccess::CF32AgentUi | Interface that must be implemented in order for the F32 agent to display information on the screen
ContentAccess::CImportFile | Created by the CSupplier to import a file
ContentAccess::CManager | Manages files and content access agents
ContentAccess::CMetaData | Stores a field and data pair for use in a supplier import operation
ContentAccess::CMetaDataArray | Stores an array of CMetaData objects for use in a supplier import operation
ContentAccess::CRightsInfo | Rights class to store a summary description of the rights and a unique reference to the rights object within an Agent
ContentAccess::CRightsManager | Manages and retrieves rights objects from an agent
ContentAccess::CSupplier | Used to import files using a content access agent
ContentAccess::CSupplierOutputFile | Holds the details of an output file produced by CAF
ContentAccess::CVirtualPath | A virtual path describes the location of the file (URI) and the location of a content object within that file (Unique Id)
ContentAccess::MAgentRightsBase | Interface used by agents as a base class for their own rights objects
ContentAccess::RAttributeSet | Holds the values of a predefined set of attributes based upon ContentAccess::TAttribute
ContentAccess::RStreamablePtrArray< T > | Template class used to store an array of pointers that can also write itself to a stream
ContentAccess::RStringAttributeSet | Holds the values of a predefined set of attributes based upon ContentAccess::TStringAttribute
ContentAccess::TAgent | Represents the name of a single CAF agent
ContentAccess::TF32AgentUiFactory | Factory function that creates the F32 Agent UI
ContentAccess::TVirtualPathPtr | Identifies the location of a file and a particular content object inside it
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CAgentContent Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CAgentContent

ContentAccess::CAgentContent Class Reference

Defines the agent interface allowing clients to browse the objects within a file. More...

#include <agentinterface.h>

List of all members.

Public Member Functions

virtual TInt | OpenContainer (const TDesC &aUniqueId)=0
Open a Container object within the file.
virtual TInt | CloseContainer ()=0
Close the current container object and go back to previous enclosing container within the file.
virtual void | GetEmbeddedObjectsL (RStreamablePtrArray< CEmbeddedObject > &aArray)=0
List all the embedded container objects and content objects within the current container.
virtual void | GetEmbeddedObjectsL (RStreamablePtrArray< CEmbeddedObject > &aArray, TEmbeddedType aType)=0
List all the embedded objects within the current container that are of the specified type.
virtual TInt | Search (RStreamablePtrArray< CEmbeddedObject > &aArray, const TDesC8 &aMimeType, TBool aRecursive)=0
Search the current container for content objects with a particular mime type.
virtual TInt | GetAttribute (TInt aAttribute, TInt &aValue, const TDesC &aUniqueId)=0
Get an attribute for an object within the file.
virtual TInt | GetAttributeSet (RAttributeSet &aAttributeSet, const TDesC &aUniqueId)=0
Get a set of attributes for an object within the file.
virtual TInt | GetStringAttribute (TInt aAttribute, TDes &aValue, const TDesC &aUniqueId)=0
Get text string attributes or meta-data for an object within the file.
virtual TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet, const TDesC &aUniqueId)=0
Used to obtain a set of string attributes for an object within the file.
virtual TInt | AgentSpecificCommand (TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer)=0
Allows extended synchronous calls to the CAF agent handling this file.
virtual void | AgentSpecificCommand (TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus)=0
Allows extended synchronous calls to the CAF agent handling this file.
virtual void | NotifyStatusChange (TEventMask aMask, TRequestStatus &aStatus, const TDesC &aUniqueId)=0
Request notification for an event for an object within the file.
virtual TInt | CancelNotifyStatusChange (TRequestStatus &aStatus, const TDesC &aUniqueId)=0
Cancel a previous notification request.
virtual void | RequestRights (TRequestStatus &aStatus, const TDesC &aUniqueId)=0
Request the agent to obtain rights for a protected content object.
virtual TInt | CancelRequestRights (TRequestStatus &aStatus, const TDesC &aUniqueId)=0
Cancel a previous RequestRights() request.
virtual void | DisplayInfoL (TDisplayInfo aInfo, const TDesC &aUniqueId)=0
View information associated with a single content object.
virtual TInt | SetProperty (TAgentProperty aProperty, TInt aValue)=0
Allows an application to request the modification of a property within the agent handling this content.

Detailed Description

Defines the agent interface allowing clients to browse the objects within a file.

Interface: publishedPartner
Interface: released

Member Function Documentation

virtual void ContentAccess::CAgentContent::AgentSpecificCommand | ( | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Allows extended synchronous calls to the CAF agent handling this file.

Applications familiar with the agent can pass objects in and out using serialization. NB: No assumption should be made about the scope of the descriptor passed to aInputBuffer for asynchronous IPC.

Parameters:
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the command was successfully executed. KErrCANotSupported if the agent does not recognize the command. KErrOverflow if the output buffer supplied is too small. KErrPermissionDenied if the agent does not allow the client to execute the command. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::AgentSpecificCommand | ( | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer
 | ) | [pure virtual]

Allows extended synchronous calls to the CAF agent handling this file.

Applications familiar with the agent can pass objects in and out using serialization.

Parameters:
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
Returns:
The outcome of the agent specific command.

KErrCANotSupported if the agent does not recognize the command.

KErrOverflow if the output buffer supplied is too small.

KErrPermissionDenied if the agent does not allow the client to execute the command.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::CancelNotifyStatusChange | ( | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Cancel a previous notification request.

Parameters:
aStatus | The TRequestStatus supplied in the call to NotifyStatusChange().
aUniqueId | The UniqueId of the content object within the file.
Returns:
The outcome of the cancel request.

KErrNone if the request was cancelled.

KErrNotFound if there was no matching request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::CancelRequestRights | ( | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Cancel a previous RequestRights() request.

Parameters:
aStatus | The TRequestStatus that was supplied to the RequestRights() function.
aUniqueId | The objects Unique Id that was supplied to the RequestRights() function.
Returns:
The result of the cancel rights request.

KErrNone if the rights request was cancelled.

KErrNotFound if there was no matching rights request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::CloseContainer ( ) [pure virtual]

Close the current container object and go back to previous enclosing container within the file.

Allows an application to access the content objects and any nested container objects within parent container

Returns:
Whether the container was closed.

KErrNone if the container was closed.

KErrNotFound if there is no enclosing container.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual void ContentAccess::CAgentContent::DisplayInfoL | ( | TDisplayInfo | aInfo,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

View information associated with a single content object.

This call blocks execution and only returns once the display is dismissed by the user.

Parameters:
aInfo | The information to display.
aUniqueId | The unique id of the object within the file.
Leave:
KErrCANotSupported if information cannot be displayed or does not exist.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentContent::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Get an attribute for an object within the file.

Parameters:
aAttribute | The attribute to query, from ContentAccess::TAttribute.
aValue | Used to return the attribute value.
aUniqueId | The UniqueId of the object within the file.
Returns:
Whether the attribute value was updated.

KErrNone if the value of the attribute was updated.

KErrNotFound if the object with the given UniqueId was not found.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentContent::GetAttributeSet | ( | RAttributeSet & | aAttributeSet,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Get a set of attributes for an object within the file.

Parameters:
aAttributeSet | The set of attributes to query and update.
aUniqueId | The unique ID of the object within the file.
Returns:
Whether that attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the default content object was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual void ContentAccess::CAgentContent::GetEmbeddedObjectsL | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray,
 |  | TEmbeddedType | aType
 | ) | [pure virtual]

List all the embedded objects within the current container that are of the specified type.

Parameters:
aArray | The array to be populated with the embedded objects.
aType | The type of objects to list.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual void ContentAccess::CAgentContent::GetEmbeddedObjectsL ( RStreamablePtrArray< CEmbeddedObject > & aArray ) [pure virtual]

List all the embedded container objects and content objects within the current container.

The UniqueId() member of CEmbeddedObject can be used to refer directly to a particular object within the file.

Parameters:
aArray The array to be populated with the embedded objects.
Leave:
KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Get text string attributes or meta-data for an object within the file.

Parameters:
aAttribute | The attribute to query, from ContentAccess::TStringAttribute.
aValue | Returns the value of the attribute.
aUniqueId | The UniqueId of the object within the file.
Returns:
Whether the attribute value was updated.

KErrNone if the attribute was retrieved.

KErrNotFound if the object with the given UniqueId was not found.

KErrOverflow if the buffer was not large enough to return the result.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentContent::GetStringAttributeSet | ( | RStringAttributeSet & | aStringAttributeSet,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Used to obtain a set of string attributes for an object within the file.

Parameters:
aStringAttributeSet | The set of attributes to query and update.
aUniqueId | The UniqueId of the container or content.
Returns:
Whether the attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the object with the given UniqueId was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual void ContentAccess::CAgentContent::NotifyStatusChange | ( | TEventMask | aMask,
 |  | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Request notification for an event for an object within the file.

NB: No assumption should be made about the scope of the descriptor passed to aUniqueId for asynchronous IPC.

Parameters:
aMask | Bitmask of events the caller is interested in.
aStatus | The TRequestStatus object to complete if the event occurs.
aUniqueId | The UniqueId of the container or content.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::OpenContainer ( const TDesC & aUniqueId ) [pure virtual]

Open a Container object within the file.

Allows an application to access the content objects and any nested container objects within the specified container.

Parameters:
aUniqueId The container object's unique ID.
Returns:
Whether the container was opened.

KErrNone if the container was opened successfully.

KErrNotFound if the container does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual void ContentAccess::CAgentContent::RequestRights | ( | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Request the agent to obtain rights for a protected content object.

NB: No assumption should be made about the scope of the descriptor passed to aUniqueId for asynchronous IPC.

This request may be handled differently by different agents. Some agents may open a browser and direct the user to a URL. Others may download and install the rights in the background.

The call should not block execution, applications can wait for a notification if they are interested in the outcome.

If a rights request completes sucessfully it does not necessarily mean rights are available. It just means the request is complete.

Parameters:
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the rights request was successful. KErrCANotSupported if the agent does not allow rights requests. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
aUniqueId | The unique id of the object within the file.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentContent::Search | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray,
 |  | const TDesC8 & | aMimeType,
 |  | TBool | aRecursive
 | ) | [pure virtual]

Search the current container for content objects with a particular mime type.

Parameters:
aArray | The array to store the results of the search. The agent will add CEmbeddedObject objects to the supplied array.
aMimeType | The mime type to search for.
aRecursive | ETrue to search inside containers embedded within the current container, EFalse to search only the current container.
Returns:
The result of the search.

KErrNone if the search was successful, even if no content objects were found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentContent::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) | [pure virtual]

Allows an application to request the modification of a property within the agent handling this content.

The agent may or may not permit the property to be changed

Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
Whether the property was set.

KErrNone if the property was set.

KErrCANotSupported if the agent does not support the property or value.

KErrAccessDenied if the agent does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

The documentation for this class was generated from the following file:
  • agentinterface.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CAgentData Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CAgentData

ContentAccess::CAgentData Class Reference

Defines the agent interface for consumer operations such as reading and seeking within a content object in a file. More...

#include <agentinterface.h>

List of all members.

Public Member Functions

virtual void | DataSizeL (TInt &aSize)=0
Gets the data size in bytes.
virtual TInt | EvaluateIntent (TIntent aIntent)=0
Allows a client to verify that the intent is supported by the current rights for the data object.
virtual TInt | ExecuteIntent (TIntent aIntent)=0
Execute intent allows the application to signal it is about to carry out the specified intent on DRM protected content.The agent will decrement applicable stateful rights such as play counts where necessary.
virtual TInt | Read (TDes8 &aDes)=0
Reads from a content object up to the maximum length of the descriptor or the end of the content object.
virtual TInt | Read (TDes8 &aDes, TInt aLength)=0
Reads a specified number of bytes of content.
virtual void | Read (TDes8 &aDes, TRequestStatus &aStatus)=0
Reads content asynchronously.
virtual void | Read (TDes8 &aDes, TInt aLength, TRequestStatus &aStatus)=0
Reads content asynchronously (up to a specified maximum number of bytes).
virtual TInt | Seek (TSeek aMode, TInt &aPos)=0
Changes or retrieves the location of the file pointer within the content object.
virtual TInt | SetProperty (TAgentProperty aProperty, TInt aValue)=0
Allows an application to request the modification of a property within the agent handling this content.
virtual TInt | GetAttribute (TInt aAttribute, TInt &aValue)=0
Get the value of an attribute for this content object.
virtual TInt | GetAttributeSet (RAttributeSet &aAttributeSet)=0
Get a set of attributes from a content object.
virtual TInt | GetStringAttribute (TInt aAttribute, TDes &aValue)=0
Get text string attributes or meta-data for this content object.
virtual TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet)=0
Used to obtain a set of string attributes.
virtual TInt | Read (TInt aPos, TDes8 &aDes, TInt aLength, TRequestStatus &aStatus)
Reads content asynchronously.

Detailed Description

Defines the agent interface for consumer operations such as reading and seeking within a content object in a file.

Interface: publishedPartner
Interface: released

Member Function Documentation

virtual void ContentAccess::CAgentData::DataSizeL ( TInt & aSize ) [pure virtual]

Gets the data size in bytes.

Parameters:
aSize On return this will contain the size of the plaintext data in bytes.
Leave:
KErrCASizeNotDetermined Size could not be determined by the managing agent.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::EvaluateIntent ( TIntent aIntent ) [pure virtual]

Allows a client to verify that the intent is supported by the current rights for the data object.

Doing so may cause subsequent reads (or other accesses) to fail. The result of the agent's evaluation of the intent is returned.

Note:
Since the intent is only evaluated the agent will not decrement any rights-state such as play counts.
Parameters:
aIntent The intended way the content will be used.
Returns:
Whether rights exist allowing the content to be used for this intent.

KErrNone if the intent is permitted.

KErrNoRights if no rights exist for the specified content object.

KErrCANoPermission if rights exist but the specified intent is not permitted.

KErrCAPendingRights if the rights have not yet arrived but are expected soon.

KErrNoPermission if rights exist but none permit the specified intent.

KErrPermissionDenied if the client is not allowed to use this content object.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::ExecuteIntent ( TIntent aIntent ) [pure virtual]

Execute intent allows the application to signal it is about to carry out the specified intent on DRM protected content.The agent will decrement applicable stateful rights such as play counts where necessary.

Applications should be very careful to use this function correctly.

  • If ExecuteIntent() is never called stateful rights will never be decremented. Users will be able to use the content forever
  • If ExecuteIntent() is called too often stateful rights may be consumed prematurely.
Usually it would be best to call ExecuteIntent immediately before the content is displayed or the instant playback begins. ExecuteIntent should not be considered a prerequisite for calling the Read functions. It is valid for an application to read from the file before calling ExecuteIntent.

Note:
Since rights are executed here the agent will decrement any rights-state such as play counts that apply.
Parameters:
aIntent The intent indicator.
Returns:
The result of attempting executing the intent.

KErrNone if the intent is permitted and stateful rights may have been decremented.

KErrNoRights if no rights exist for the specified content object.

KErrCANoPermission if rights exist but the specified intent is not permitted.

KErrCAPendingRights if the rights have not yet arrived but are expected soon.

KErrNoPermission if rights exist but none permit the specified intent.

KErrPermissionDenied if the client is not allowed to use this content object.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue
 | ) | [pure virtual]

Get the value of an attribute for this content object.

Parameters:
aAttribute | The attribute to query, from ContentAccess::TAttribute.
aValue | Used to return the attribute value.
Returns:
Whether the attribute was updated.

KErrNone if the value of the attribute was updated.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::GetAttributeSet ( RAttributeSet & aAttributeSet ) [pure virtual]

Get a set of attributes from a content object.

Parameters:
aAttributeSet The set of attributes to query and update.
Returns:
Whether the attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

virtual TInt ContentAccess::CAgentData::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue
 | ) | [pure virtual]

Get text string attributes or meta-data for this content object.

Parameters:
aAttribute | The attribute to query, from ContentAccess::TStringAttribute.
aValue | Returns the value of the attribute.
Returns:
Whether the value was updated.

KErrNone if the attribute was retrieved.

KErrOverflow if the buffer was not large enough to return the result.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::GetStringAttributeSet ( RStringAttributeSet & aStringAttributeSet ) [pure virtual]

Used to obtain a set of string attributes.

Parameters:
aStringAttributeSet The set of attributes to query and update.
Returns:
Whether the string attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the default content object was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentData::Read | ( | TInt | aPos,
 |  | TDes8 & | aDes,
 |  | TInt | aLength,
 |  | TRequestStatus & | aStatus
 | ) | [virtual]

Reads content asynchronously.

The data is read from a specified offset up to a specified number of bytes or until the end of the content object is reached. The data is read into the descriptor buffer supplied.

See also:
Read(TDes8& aDes)
Parameters:
aPos | Position of first byte to be read. This is an offset from the start of the file.
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aLength | The number of bytes to read from the file, or to the end of the file, whichever is encountered first. The length of the buffer is set to the number of bytes actually read.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was successfully read. Otherwise one of the CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Returns:
KErrNone if the async read request was successfully submitted.

KErrCANotSupported if the agent does not support this operation.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual void ContentAccess::CAgentData::Read | ( | TDes8 & | aDes,
 |  | TInt | aLength,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Reads content asynchronously (up to a specified maximum number of bytes).

See also:
Read(TDes8& aDes)
Parameters:
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aLength | The number of bytes to read from the file, or to the end of the file, whichever is encountered first. The length of the buffer is set to the number of bytes actually read.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was successfully read. Otherwise one of the CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual void ContentAccess::CAgentData::Read | ( | TDes8 & | aDes,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Reads content asynchronously.

See also:
Read(TDes8& aDes)
Parameters:
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was successfully read. Otherwise one of the CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::Read | ( | TDes8 & | aDes,
 |  | TInt | aLength
 | ) | [pure virtual]

Reads a specified number of bytes of content.

See also:
Read(TDes8& aDes)
Parameters:
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aLength | The number of bytes to read from the file, or to the end of the file, whichever is encountered first. The length of the buffer is set to the number of bytes actually read.
Returns:
KErrNone if successful.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::Read ( TDes8 & aDes ) [pure virtual]

Reads from a content object up to the maximum length of the descriptor or the end of the content object.

When an attempt is made to read beyond the end of the content, no error is returned. The descriptor’s length is set to the number of bytes that were read into it. Therefore, when reading through content, the end has been reached when the descriptor length (given by TDesC::Length()) is zero.

Parameters:
aDes Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
Returns:
KErrNone if successful, otherwise another of the system-wide error codes.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::Seek | ( | TSeek | aMode,
 |  | TInt & | aPos
 | ) | [pure virtual]

Changes or retrieves the location of the file pointer within the content object.

There are four seek modes used:

  • ESeekStart - Sets the file pointer aPos bytes from the start of the content object. aPos is not modified by the call to Seek()
  • ESeekEnd - Sets the file pointer aPos bytes from the end of the content object. The aPos parameter supplied should be zero or negative when using ESeekEnd. Upon completion aPos is updated with the current position relative to the start of the content object.
  • ESeekCurrent - Moves the file pointer aPos bytes from the current position. Upon completion aPos is updated with the new position relative to the start of the content object. Suppling a zero value for the aPos Parameter can be used to retrieve the current file pointer location
  • ESeekAddress Sets the aPos parameter to the address of the byte aPos bytes from the start of the content object
See also:
TSeek
Parameters:
aMode | Seek mode - controls the destination of the seek operation.
aPos | Offset from either the start, end or current position depending upon the seek mode. Negative offsets are used to seek before the current position or relative to the end of the file.
Returns:
KErrNone if successful.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual TInt ContentAccess::CAgentData::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) | [pure virtual]

Allows an application to request the modification of a property within the agent handling this content.

The agent may or may not permit the property to be changed

Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
Whether or not the property was set.

KErrNone if the property was set.

KErrCANotSupported if the agent does not support the property or value.

KErrAccessDenied if the agent does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

The documentation for this class was generated from the following file:
  • agentinterface.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CAgentFactory Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CAgentFactory

ContentAccess::CAgentFactory Class Reference

Abstract interface handed out by an ECOM agent implementation by REComSession::CreateImplementationL(). More...

#include <agentfactory.h>

List of all members.

Public Member Functions

virtual IMPORT_C | ~CAgentFactory ()
Destructor, calls REComSession::DestroyedImplementation(); to destroy the ECOM implementation.
virtual CAgentContent * | CreateContentBrowserL (const TDesC &aURI, TContentShareMode aShareMode)=0
Factory function creates a CAgentContent object for browsing the contents of a file belonging to this agent.
virtual CAgentContent * | CreateContentBrowserL (RFile &aFile)=0
Creates a CAgentContent object for browsing the contents of a file belonging to this agent.
virtual CAgentData * | CreateDataConsumerL (const TVirtualPathPtr &aVirtualPath, TContentShareMode aShareMode)=0
Factory function creates a CAgentData object for reading from a content object.
virtual CAgentData * | CreateDataConsumerL (RFile &aFile, const TDesC &aUniqueId)=0
Factory function creates a CAgentData object for reading from a content object.
virtual CAgentManager * | CreateManagerL ()=0
Factory function creates an object for performing management functions with this particular agent.
virtual CAgentImportFile * | CreateImporterL (const TDesC8 &aMimeType, const CMetaDataArray &aMetaDataArray, const TDesC &aOutputDirectory, const TDesC &aSuggestedFileName)=0
Factory function creates an object that allows the agent to import or transform content.
virtual CAgentImportFile * | CreateImporterL (const TDesC8 &aMimeType, const CMetaDataArray &aMetaDataArray)=0
Factory function creates an object that allows the agent to import or transform content.
virtual CAgentRightsManager * | CreateRightsManagerL ()=0
Factory function that creates an rights manager object for this agent.

Static Public Member Functions

static CAgentFactory * | NewL (TUid aUid)
Create a new instance of a particular agent using its DLL implementation Uid.

Detailed Description

Abstract interface handed out by an ECOM agent implementation by REComSession::CreateImplementationL().

CAgentFactory defines an abstract factory that is responsible for creating the abstract products:

  • ContentAccess::CAgentContent
  • ContentAccess::CAgentData
  • ContentAccess::CAgentImportFile
  • ContentAccess::CAgentManager
  • ContentAccess::CAgentRightsManager
Derived classes will hand out concrete product implementations which are specific for that particular agent.

Derived classes effectively represent the ECOM session handle used by CAF classes

See also:
ContentAccess::CF32AgentFactory. This implements ContentAccess::CAgentFactory to handle unrestricted content.
Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual IMPORT_C ContentAccess::CAgentFactory::~CAgentFactory ( ) [virtual]

Destructor, calls REComSession::DestroyedImplementation(); to destroy the ECOM implementation.

When all implementations are destroyed ECOM will unload the agent DLL

Member Function Documentation

virtual CAgentContent* ContentAccess::CAgentFactory::CreateContentBrowserL ( RFile & aFile ) [pure virtual]

Creates a CAgentContent object for browsing the contents of a file belonging to this agent.

Parameters:
aFile An open file handle for reading from the file, the agent must make its own duplicate of the file handle.
Returns:
A pointer to the CAgentContent object.

virtual CAgentContent* ContentAccess::CAgentFactory::CreateContentBrowserL | ( | const TDesC & | aURI,
 |  | TContentShareMode | aShareMode
 | ) | [pure virtual]

Factory function creates a CAgentContent object for browsing the contents of a file belonging to this agent.

Parameters:
aURI | The location of the file.
aShareMode | The share mode used for opening this content
Returns:
A pointer to the CAgentContent object.

virtual CAgentData* ContentAccess::CAgentFactory::CreateDataConsumerL | ( | RFile & | aFile,
 |  | const TDesC & | aUniqueId
 | ) | [pure virtual]

Factory function creates a CAgentData object for reading from a content object.

Parameters:
aFile | An open file handle used by the agent to read from the file. The agent MUST make its own duplicate of this file handle, either in the same process or a server process
aUniqueId | The agent specific unique ID of object within the file to read.
Returns:
A pointer to the CAgentData object.

virtual CAgentData* ContentAccess::CAgentFactory::CreateDataConsumerL | ( | const TVirtualPathPtr & | aVirtualPath,
 |  | TContentShareMode | aShareMode
 | ) | [pure virtual]

Factory function creates a CAgentData object for reading from a content object.

Parameters:
aVirtualPath | The content object to read from
aShareMode | The share mode for opening the file containing the content object
Returns:
A pointer to the CAgentData object.

virtual CAgentImportFile* ContentAccess::CAgentFactory::CreateImporterL | ( | const TDesC8 & | aMimeType,
 |  | const CMetaDataArray & | aMetaDataArray
 | ) | [pure virtual]

Factory function creates an object that allows the agent to import or transform content.

The caller will supply output files where necessary

Parameters:
aMimeType | The mime type of the file to be imported
aMetaDataArray | Array of metadata associated with the file to import
Returns:
A pointer to a ContentAccess::CAgentImportFile object.
Leave:
KErrCANotSupported If the agent does not support importing or transforming content

virtual CAgentImportFile* ContentAccess::CAgentFactory::CreateImporterL | ( | const TDesC8 & | aMimeType,
 |  | const CMetaDataArray & | aMetaDataArray,
 |  | const TDesC & | aOutputDirectory,
 |  | const TDesC & | aSuggestedFileName
 | ) | [pure virtual]

Factory function creates an object that allows the agent to import or transform content.

The agent will supply output files where necessary

Parameters:
aMimeType | The mime type of the file to be imported
aMetaDataArray | Array of metadata associated with the file to import
aOutputDirectory | Preferred directory to store output files
aSuggestedFileName | Suggested filename for the output file(s)
Returns:
A pointer to a ContentAccess::CAgentImportFile object.
Leave:
KErrCANotSupported If the agent does not support importing or transforming content

virtual CAgentManager* ContentAccess::CAgentFactory::CreateManagerL ( ) [pure virtual]

Factory function creates an object for performing management functions with this particular agent.

CAgentManager objects are stateless so they require no construction parameters.

Returns:
A pointer to a CAgentManager object.

virtual CAgentRightsManager* ContentAccess::CAgentFactory::CreateRightsManagerL ( ) [pure virtual]

Factory function that creates an rights manager object for this agent.

Returns:
A pointer to a ContentAccess::CAgentRightsManager object.
Leave:
KErrCANotSupported If the agent does not provide any rights management functions

static CAgentFactory* ContentAccess::CAgentFactory::NewL ( TUid aUid ) [static]

Create a new instance of a particular agent using its DLL implementation Uid.

Parameters:
aUid The Uid of the agent to create an instance of its CAgentFactory
Returns:
a new CAgentFactory
Interface: internalComponent
Interface: released

The documentation for this class was generated from the following file:
  • agentfactory.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CAgentImportFile Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CAgentImportFile

ContentAccess::CAgentImportFile Class Reference

Defines the interface for importing files into a Content access agent. More...

#include <agentinterface.h>

List of all members.

Public Member Functions

virtual TInt | WriteData (const TDesC8 &aData)=0
Writes a block of data from a file to the agent.
virtual TInt | WriteDataComplete ()=0
Signals to the agent that the entire file has now been transferred to the agent.
virtual void | WriteData (const TDesC8 &aData, TRequestStatus &aStatus)=0
Asynchronously writes a block of data from a file the agent.
virtual void | WriteDataComplete (TRequestStatus &aStatus)=0
Signals to the agent that the entire file has now been transferred to the agent.
virtual TInt | OutputFileCountL () const =0
Gets the number of output files produced so far.
virtual CSupplierOutputFile & | OutputFileL (TInt aIndex)=0
Return information about an output file generated by the import operation.
virtual TImportStatus | GetImportStatus () const =0
Retrieve the import status.
virtual TInt | GetSuggestedOutputFileExtension (TDes &aFileExtension)=0
Get the agents suggestion for the file extension of the output file required by the agent.
virtual TInt | GetSuggestedOutputFileName (TDes &aFileName)=0
Get the agents suggestion for the file name (with extension) of the output file required by the agent.
virtual TInt | ContinueWithNewOutputFile (RFile &aFile, const TDesC &aFileName)=0
Continue the last write operation with a new file handle as requested by the agent.
virtual void | ContinueWithNewOutputFile (RFile &aFile, const TDesC &aFileName, TRequestStatus &aStatus)=0
Continue the last write operation with a new file handle and return the result asynchronously.
virtual IMPORT_C void | Cancel ()
Cancel an outstanding asynchronous WriteData() request.

Detailed Description

Defines the interface for importing files into a Content access agent.

The agent should treat the import as a transaction and either import the entire file or revert to the state before the import if the import is cancelled.

The client cancels an import by deleting the CAgentImportFile object before WriteDataComplete() is called.

Interface: publishedPartner
Interface: released

Member Function Documentation

virtual IMPORT_C void ContentAccess::CAgentImportFile::Cancel ( ) [virtual]

Cancel an outstanding asynchronous WriteData() request.

virtual void ContentAccess::CAgentImportFile::ContinueWithNewOutputFile | ( | RFile & | aFile,
 |  | const TDesC & | aFileName,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Continue the last write operation with a new file handle and return the result asynchronously.

Parameters:
aFile | A new file handle opened with write permission
aFileName | The name of the file handle that has been supplied. This is used by the agent when creating CSupplierOutputFile objects. It should include the full path and filename in order to be consistent with files generated by the agent
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the WriteData() or WriteDataComplete() operation is now complete. KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile(). Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

virtual TInt ContentAccess::CAgentImportFile::ContinueWithNewOutputFile | ( | RFile & | aFile,
 |  | const TDesC & | aFileName
 | ) | [pure virtual]

Continue the last write operation with a new file handle as requested by the agent.

Parameters:
aFile | A new file handle opened with write permission.
aFileName | The name of the file handle that has been supplied. This is used by the agent when creating CSupplierOutputFile objects. It should include the full path and filename in order to be consistent with files generated by the agent.
Returns:
The result of the continuing write operation.

KErrNone if the WriteData() or WriteDataComplete() operation is now complete.

KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile().

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

virtual TImportStatus ContentAccess::CAgentImportFile::GetImportStatus ( ) const [pure virtual]

Retrieve the import status.

Used to indicate non fatal problems encountered during the import operation. Provides feedback to the client in case any problems are encountered.

The client can then decide whether or not to continue the import.

Returns:
The state of the import operation.
Capability:
DRM Importing DRM protected content is not permitted for processes without DRM capability.

virtual TInt ContentAccess::CAgentImportFile::GetSuggestedOutputFileExtension ( TDes & aFileExtension ) [pure virtual]

Get the agents suggestion for the file extension of the output file required by the agent.

This function should only be called when the agent has returned KErrCANewFileHandleRequired from WriteData() or WriteDataComplete().

The extension must include the dot '.' character.

Parameters:
aFileExtension On completion this will contain the appropriate file extension.
Returns:
The result of the request for a file extension.

KErrNone if the agent populated aFileExtension with the correct file extension.

KErrNotReady if the agent is not waiting for another file handle to be provided.

KErrUnknown if the agent does not know what extension should be used.

virtual TInt ContentAccess::CAgentImportFile::GetSuggestedOutputFileName ( TDes & aFileName ) [pure virtual]

Get the agents suggestion for the file name (with extension) of the output file required by the agent.

This function should only be called when the agent has returned KErrCANewFileHandleRequired from WriteData() or WriteDataComplete().

The file name is of the form filename.extension.

Parameters:
aFileName On completion this will contain the appropriate filename.
Returns:
KErrNone if the agent populated aFileName with the correct file name.

KErrNotReady if the agent is not waiting for another file handle to be provided.

KErrUnknown if the agent does not know what file name should be used.

virtual TInt ContentAccess::CAgentImportFile::OutputFileCountL ( ) const [pure virtual]

Gets the number of output files produced so far.

Returns:
The number of output files.

virtual CSupplierOutputFile& ContentAccess::CAgentImportFile::OutputFileL ( TInt aIndex ) [pure virtual]

Return information about an output file generated by the import operation.

It is possible that the output file does not have the same name as the one suggested at the beginning of the import. An agent may need to use a particular file extension or a particular name.

The agent may decide not to store the output file in the output directory suggested at the start of the import. eg. it may store the file in its private server directory.

The output files may only appear in this array after the WriteDataComplete() function has been called.

Parameters:
aIndex The zero-based index of the file (must be less than the value returned by OutputFileCountL().
Returns:
The CSupplierOutputFile for this object.
Capability:
DRM Importing DRM protected content is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentImportFile::WriteData | ( | const TDesC8 & | aData,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Asynchronously writes a block of data from a file the agent.

Notifies the client when the write operation is complete.

Parameters:
aData | The block of data.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was written successfully. KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile(). KErrNotReady if the agent was not expecting WriteDataComplete() to be called at this point. Otherwise one of the other CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Capability:
DRM Importing DRM protected content is not permitted for processes without DRM capability.

virtual TInt ContentAccess::CAgentImportFile::WriteData ( const TDesC8 & aData ) [pure virtual]

Writes a block of data from a file to the agent.

Parameters:
aData The block of data.
Returns:
The result of the write operation.

KErrNone if the data was written successfully.

KErrCANewFileHandleRequired if the agent requires the client to provide a new file handle before proceeding. The agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile().

KErrNotReady if the agent was not expecting WriteData() to be called at this point.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Importing DRM protected content is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentImportFile::WriteDataComplete ( TRequestStatus & aStatus ) [pure virtual]

Signals to the agent that the entire file has now been transferred to the agent.

Notifies the client when any final processing operation is complete.

Parameters:
aStatus Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was written successfully. KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile(). KErrNotReady if the agent was not expecting WriteDataComplete() to be called at this point. Otherwise one of the other CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Capability:
DRM Importing DRM protected content is not permitted for processes without DRM capability.

virtual TInt ContentAccess::CAgentImportFile::WriteDataComplete ( ) [pure virtual]

Signals to the agent that the entire file has now been transferred to the agent.

Returns:
The result of the write operation.

KErrNone if the data was written successfully.

KErrCANewFileHandleRequired if the agent requires the client to provide a new file handle before proceeding. The agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile().

KErrNotReady if the agent was not expecting WriteDataComplete() to be called at this point.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Importing DRM protected content is not permitted for processes without DRM capability.

The documentation for this class was generated from the following file:
  • agentinterface.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CAgentManager Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CAgentManager

ContentAccess::CAgentManager Class Reference

Defines the agent interface for manager operations. More...

#include <agentinterface.h>

List of all members.

Public Member Functions

virtual TInt | DeleteFile (const TDesC &aFileName)=0
Delete a file belonging to this agent.
virtual TInt | CopyFile (const TDesC &aSource, const TDesC &aDestination)=0
Make a copy of the content file (eg to removable media) belonging to this agent.
virtual TInt | RenameFile (const TDesC &aSource, const TDesC &aDestination)=0
Rename or move the content file (eg to removable media) belonging to this agent.
virtual TInt | MkDir (const TDesC &aPath)=0
Create a directory.
virtual TInt | MkDirAll (const TDesC &aPath)=0
Create all directories in the given path if they do not exist.
virtual TInt | RmDir (const TDesC &aPath)=0
Remove a directory.
virtual TInt | GetDir (const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList) const =0
Gets a filtered list of a directory's contents.
virtual TInt | GetDir (const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList, CDir *&aDirList) const =0
Gets a filtered list of the directory and file entries contained in a directory and a list of the directory entries only.
virtual TInt | GetDir (const TDesC &aName, const TUidType &aEntryUid, TUint aEntrySortKey, CDir *&aFileList) const =0
Gets a filtered list of a directory's contents by UID.
virtual TInt | GetAttribute (TInt aAttribute, TInt &aValue, const TVirtualPathPtr &aVirtualPath)=0
Get an attribute from a content object.
virtual TInt | GetAttributeSet (RAttributeSet &aAttributeSet, const TVirtualPathPtr &aVirtualPath)=0
Get a set of attributes from a content object.
virtual TInt | GetStringAttribute (TInt aAttribute, TDes &aValue, const TVirtualPathPtr &aVirtualPath)=0
Get text string attributes or meta-data from the file.
virtual TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet, const TVirtualPathPtr &aVirtualPath)=0
Used to obtain a set of string attributes.
virtual void | NotifyStatusChange (const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus)=0
Notify the caller when the status of a DRM protected content object changes.
virtual TInt | CancelNotifyStatusChange (const TDesC &aURI, TRequestStatus &aStatus)=0
Cancel a previous notification request.
virtual TInt | SetProperty (TAgentProperty aProperty, TInt aValue)=0
Allows an application to request the modification of a property within the agent.
virtual void | DisplayInfoL (TDisplayInfo aInfo, const TVirtualPathPtr &aVirtualPath)=0
View information associated with a single content object.
virtual TBool | IsRecognizedL (const TDesC &aURI, TContentShareMode aShareMode) const =0
Identifies whether or not the file at the given URI is to be handled by this agent.
virtual TBool | IsRecognizedL (RFile &aFile) const =0
Identifies whether or not the file is handled by this agent.
virtual TBool | RecognizeFileL (const TDesC &aFileName, const TDesC8 &aBuffer, TDes8 &aFileMimeType, TDes8 &aContentMimeType) const =0
Determines whether the file is recognized by this agent.
virtual TInt | AgentSpecificCommand (TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer)=0
Allows extended synchronous calls to the agent Objects are passed in and out using serialization.
virtual void | AgentSpecificCommand (TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus)=0
Allows extended asynchronous calls to the agent.
virtual void | DisplayManagementInfoL ()=0
Allow the agent to display management information for users to manage any settings or other information stored by the agent.
virtual void | PrepareHTTPRequestHeaders (RStringPool &aStringPool, RHTTPHeaders &aRequestHeaders) const =0
Prepare the HTTP request headers required to download files that may be required for this agent.
virtual IMPORT_C TInt | RenameDir (const TDesC &aOldName, const TDesC &aNewName)
Rename a directory.
virtual IMPORT_C TInt | CopyFile (RFile &aSource, const TDesC &aDestination)
Make a copy of the content file (eg to removable media) belonging to this agent using a file handle.

Detailed Description

Defines the agent interface for manager operations.

The CAgentManager is not related to any particular content object but used to manage files and settings belonging to this agent

All operations performed by the agent manager should be implemented in a transactional manner by either completing or reverting to the state before the function was called.

Interface: publishedPartner
Interface: released

Member Function Documentation

virtual void ContentAccess::CAgentManager::AgentSpecificCommand | ( | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Allows extended asynchronous calls to the agent.

Objects can be passed in and out using serialization. NB: No assumption should be made about the scope of the descriptor passed to aInputBuffer for asynchronous IPC.

Parameters:
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the command was successful. KErrCANotSupported if the agent does not recognize the command. KErrPermissionDenied if the agent does not permit the client to execute this command. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to extended DRM agent functions is not permitted for processes without DRM capability

virtual TInt ContentAccess::CAgentManager::AgentSpecificCommand | ( | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer
 | ) | [pure virtual]

Allows extended synchronous calls to the agent Objects are passed in and out using serialization.

Parameters:
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
Returns:
The outcome of the agent specific command.

KErrNone if the command was successful.

KErrCANotSupported if the agent does not recognize the command.

KErrPermissionDenied if the agent does not permit the client to execute this command.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to extended DRM agent functions is not permitted for processes without DRM capability

virtual TInt ContentAccess::CAgentManager::CancelNotifyStatusChange | ( | const TDesC & | aURI,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Cancel a previous notification request.

Parameters:
aURI | The URI supplied in the call to NotifyStatusChange().
aStatus | The TRequestStatus supplied in the call to NotifyStatusChange().
Returns:
The outcome of the cancel request.

KErrNone if the notification was cancelled.

KErrNotFound if there was no matching request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

virtual IMPORT_C TInt ContentAccess::CAgentManager::CopyFile | ( | RFile & | aSource,
 |  | const TDesC & | aDestination
 | ) | [virtual]

Make a copy of the content file (eg to removable media) belonging to this agent using a file handle.

Access to the agents private directory is permitted at the agents discretion.

Parameters:
aSource | The handle the source file.
aDestination | The full pathname of the destination file.
Returns:
The outcome of the copy operation.

KErrNone if the file was copied successfully.

KErrAccessDenied if the agent does not allow the file to be copied.

KErrCANotSupported if the agent does not support file copying.

KErrPermissionDenied if the client does not have the necessary capabilities to copy the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Copying DRM protected files is not permitted for processes without DRM capability. Copying unprotected files is permitted

virtual TInt ContentAccess::CAgentManager::CopyFile | ( | const TDesC & | aSource,
 |  | const TDesC & | aDestination
 | ) | [pure virtual]

Make a copy of the content file (eg to removable media) belonging to this agent.

Access to the agents private directory is permitted at the agents discretion.

Parameters:
aSource | The full pathname of the source file.
aDestination | The full pathname of the destination file.
Returns:
The outcome of the copy operation.

KErrNone if the file was copied successfully.

KErrAccessDenied if the agent does not allow the file to be copied.

KErrCANotSupported if the agent does not support file copying.

KErrPermissionDenied if the client does not have the necessary capabilities to copy the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Copying DRM protected files is not permitted for processes without DRM capability. Copying unprotected files is permitted

virtual TInt ContentAccess::CAgentManager::DeleteFile ( const TDesC & aFileName ) [pure virtual]

Delete a file belonging to this agent.

The agent implementation may delete rights that were associated with the content at the same time. If an agent does delete rights at the same time as the content it should display a confirmation dialog that makes it clear to the user the rights they paid for will be also deleted.

Execution will be blocked until any dialog displayed is complete. Applications can request to disable the agents user interface using the SetProperty() command

Access to the agents private directory is permitted at the agents discretion.

Parameters:
aFileName The full pathname of the file to delete.
Returns:
The outcome of the delete operation.

KErrNone if the file was deleted successfully.

KErrCancel if the user selects cancel in an agent supplied confirmation screen.

KErrAccessDenied if the agent does not allow the file to be deleted.

KErrCANotSupported if the agent does not support file deletion

KErrPermissionDenied if the client does not have the necessary capabilities to delete the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Deleting DRM protected content is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentManager::DisplayInfoL | ( | TDisplayInfo | aInfo,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | [pure virtual]

View information associated with a single content object.

This call blocks execution and only returns once the display is dismissed by the user.

Parameters:
aInfo | The information to display.
aVirtualPath | The content object.
Leave:
KErrCANotSupported if agent cannot display the requested information.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual void ContentAccess::CAgentManager::DisplayManagementInfoL ( ) [pure virtual]

Allow the agent to display management information for users to manage any settings or other information stored by the agent.

The scope of this information is left to the agent implementation but it is expected that a DRM agent will display the state of all DRM rights objects (pending, available, expired, orphaned) and allow users to delete rights that are no longer required.

Leave:
KErrCANotSupported If the agent does support the display of management information.
Capability:
DRM Agents implementing DRM may not display their management dialog to processes without DRM capability

virtual TInt ContentAccess::CAgentManager::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | [pure virtual]

Get an attribute from a content object.

Parameters:
aAttribute | The attribute to retrieve, from ContentAccess::TAttribute.
aValue | Used to return the value of the attribute.
aVirtualPath | The content object whose attributes are to be queried.
Returns:
Whether the attribute value was updated.

KErrNone if the attribute value was updated.

KErrNotFound if the URI or the object with the given UniqueId inside the file was not found.

KErrCANotSupported if the requested attribute is not supported for this content object.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentManager::GetAttributeSet | ( | RAttributeSet & | aAttributeSet,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | [pure virtual]

Get a set of attributes from a content object.

Parameters:
aAttributeSet | The set of attributes to query and update.
aVirtualPath | The content object to retrieve attributes from.
Returns:
Whether the attribute set was updated.

KErrNone if the attribute set was updated successfully.

KErrNotFound if the content object was not found.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentManager::GetDir | ( | const TDesC & | aName,
 |  | const TUidType & | aEntryUid,
 |  | TUint | aEntrySortKey,
 |  | CDir *& | aFileList
 | ) | const [pure virtual]

Gets a filtered list of a directory's contents by UID.

The aUidType parameter determines which file entry types should be listed. The sort key determines the order in which they are listed.

Notes:

  1. The function sets aFileList to NULL, and then allocates memory for it before appending entries to the list. Therefore, aFileList should have no memory allocated to it before this function is called, otherwise this memory will become orphaned.
  2. The caller of this function is responsible for deleting aFileList after the function has returned.

This function can be used to list the contents of the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Agents can just return KErrCANotSupported if they do not wish to publish their private directory. Alternatively they can just populate the CDir object with the entries they wish to show.

Parameters:
aName | The name of the directory for which a listing is required. Wildcards may be used to specify particular files.
aEntryUid | Only those files whose UIDs match those specified within this UID type will be included in the file list. Any, or all, of the three UIDs within the UID type may be omitted. Any UID which is omitted acts in a similar manner to a wildcard character, matching to all UIDs.
aEntrySortKey | The sort key. This is a set of flags indicating the order in which the entries are to be sorted. These flags are defined by TEntryKey.
aFileList | On return contains a filtered list of directory and file entries.
Returns:
The outcome of the GetDir operation.

KErrNone The directory contents were listed successfully.

KErrCANotSupported The agent does not allow clients to view its private directory.

KErrPermissionDenied If the process does not have the correct capabilities to view the directory.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual TInt ContentAccess::CAgentManager::GetDir | ( | const TDesC & | aName,
 |  | TUint | aEntryAttMask,
 |  | TUint | aEntrySortKey,
 |  | CDir *& | aEntryList,
 |  | CDir *& | aDirList
 | ) | const [pure virtual]

Gets a filtered list of the directory and file entries contained in a directory and a list of the directory entries only.

The bitmask determines which file and directory entry types should be listed in aFileList. The contents of the second list, aDirList are not affected by the bitmask; it returns all directory entries contained in directory aName. The sort key determines the order in which both lists are sorted.

Notes:

  1. If sorting by UID (as indicated when the ESortByUid bit is OR'ed with the sort key), then UID information will be included in the listing whether or not KEntryAttAllowUid is specified in aEntryAttMask.
  2. The function sets both aFileList and aDirList to NULL, and then allocates memory to them before appending entries to the lists. Therefore, aFileList and aDirList should have no memory allocated to them before this function is called, otherwise the allocated memory will become orphaned.
  3. The caller of this function is responsible for deleting aFileList and aDirList after the function has returned.

This function can be used to list the contents of the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Agents can just return KErrCANotSupported if they do not wish to publish their private directory. Alternatively they can just populate the CDir object with the entries they wish to show.

Parameters:
aName | The name of the directory for which a listing is required. Wildcards may be used to specify particular files.
aEntryAttMask | Bitmask indicating the attributes of interest. Only files and directories whose attributes match those specified here can be included in aFileList. aDirList is unaffected by this mask. For more information, see KEntryAttMatchMask and the other directory entry details. Also see KEntryAttNormal and the other file or directory attributes.
aEntrySortKey | The sort key. This is a set of flags indicating the order in which the entries in both lists are to be sorted. These flags are defined by TEntryKey.
aEntryList | On return contains a filtered list of directory and file entries.
aDirList | On return contains a filtered list of directory entries only.
Returns:
The outcome of the GetDir operation.

KErrNone The directory contents were listed successfully.

KErrCANotSupported The agent does not allow clients to view its private directory.

KErrPermissionDenied If the process does not have the correct capabilities to view the directory.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual TInt ContentAccess::CAgentManager::GetDir | ( | const TDesC & | aName,
 |  | TUint | aEntryAttMask,
 |  | TUint | aEntrySortKey,
 |  | CDir *& | aEntryList
 | ) | const [pure virtual]

Gets a filtered list of a directory's contents.

The bitmask determines which file and directory entry types should be listed. The sort key determines the order in which they are listed.

Notes:

  1. If sorting by UID (as indicated when the ESortByUid bit is OR'ed with the sort key), then UID information will be included in the listing whether or not KEntryAttAllowUid is specified in aEntryAttMask.
  2. The function sets aFileList to NULL, and then allocates memory for it before appending entries to the list. Therefore, aFileList should have no memory allocated to it before this function is called, otherwise this memory will become orphaned.
  3. The caller of this function is responsible for deleting aFileList after the function has returned.

This function can be used to list the contents of the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Agents can just return KErrCANotSupported if they do not wish to publish their private directory. Alternatively they can just populate the CDir object with the entries they wish to show.

Parameters:
aName | The name of the directory for which a listing is required. Wildcards may be used to specify particular files.
aEntryAttMask | Bitmask indicating the attributes of interest. Only files and directories whose attributes match those specified here can be included in the listing. For more information, see KEntryAttMatchMask and the other directory entry details. Also see KEntryAttNormal and the other file or directory attributes
aEntrySortKey | The sort key. This is a set of flags indicating the order in which the entries are to be sorted. These flags are defined by TEntryKey.
aEntryList | On return contains a filtered list of directory and file entries.
Returns:
The outcome of the GetDir operation.

KErrNone if the directory contents were listed successfully.

KErrCANotSupported if the agent does not allow clients to view its private directory.

KErrPermissionDenied if the process does not have the correct capabilities to view the directory.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual TInt ContentAccess::CAgentManager::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | [pure virtual]

Get text string attributes or meta-data from the file.

Parameters:
aAttribute | The attribute to retrieve, from ContentAccess::TStringAttribute.
aValue | Used to return the value of the attribute.
aVirtualPath | The content object whose attributes are to be retrieved.
Returns:
Whether the value was updated.

KErrNone if the attribute was retrieved successfully.

KErrNotFound if the content object does not exist.

KErrCANotSupported if the requested attribute does not apply to this content object.

KErrOverflow if the buffer was not large enough to return the result.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TInt ContentAccess::CAgentManager::GetStringAttributeSet | ( | RStringAttributeSet & | aStringAttributeSet,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | [pure virtual]

Used to obtain a set of string attributes.

Parameters:
aStringAttributeSet | The set of attributes to query and update.
aVirtualPath | The content object whose attributes are to be retrieved.
Returns:
Whether the string attribute set was updated.

KErrNone if the attribute set was updated successfully.

KErrNotFound if the object with the given virtual path was not found.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

virtual TBool ContentAccess::CAgentManager::IsRecognizedL ( RFile & aFile ) const [pure virtual]

Identifies whether or not the file is handled by this agent.

The agent should look at the name of the file first to try and avoid the need to read from the file.

Parameters:
aFile An open file handle.
Returns:
ETrue if this agent supports and recognises the file, EFalse otherwise.

virtual TBool ContentAccess::CAgentManager::IsRecognizedL | ( | const TDesC & | aURI,
 |  | TContentShareMode | aShareMode
 | ) | const [pure virtual]

Identifies whether or not the file at the given URI is to be handled by this agent.

The agent should perform the mimimum possible processing to make the recognition process as fast as possible. It should avoid opening the file whenever possible.

Parameters:
aURI | Location of the file to be examined.
aShareMode | The share mode to use if the agent opens a file.
Returns:
ETrue if this agent supports and recognises the file, EFalse otherwise.

virtual TInt ContentAccess::CAgentManager::MkDir ( const TDesC & aPath ) [pure virtual]

Create a directory.

This function can be used to create a directory within in the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aPath The full pathname of the directory to create.
Returns:
The outcome of the MkDir operation.

KErrNone if the directory was created successfully.

KErrAccessDenied if the agent does not allow the directory to be created.

KErrCANotSupported if the agent does not support directory creation.

KErrPermissionDenied if the client does not have the necessary capabilities to create directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual TInt ContentAccess::CAgentManager::MkDirAll ( const TDesC & aPath ) [pure virtual]

Create all directories in the given path if they do not exist.

This function can be used to create directories within in the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aPath The full pathname of the directory to create.
Returns:
The outcome of the MkDirAll operation.

KErrNone if the directory was created successfully.

KErrAccessDenied if the agent does not allow the directory to be created.

KErrPermissionDenied if the client does not have the necessary capabilities to create directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual void ContentAccess::CAgentManager::NotifyStatusChange | ( | const TDesC & | aURI,
 |  | TEventMask | aMask,
 |  | TRequestStatus & | aStatus
 | ) | [pure virtual]

Notify the caller when the status of a DRM protected content object changes.

NB: No assumption should be made about the scope of the descriptor passed to aURI for asynchronous IPC.

Parameters:
aURI | The location of the file.
aMask | Bitmask of events the caller is interested in.
aStatus | The TRequestStatus object to complete if the event occurs, or KErrCANotSupported if the agent does not support asynchronous notifications.
Capability:
DRM Deleting DRM protected content is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentManager::PrepareHTTPRequestHeaders | ( | RStringPool & | aStringPool,
 |  | RHTTPHeaders & | aRequestHeaders
 | ) | const [pure virtual]

Prepare the HTTP request headers required to download files that may be required for this agent.

Parameters:
aStringPool | The string pool used by the HTTP session.
aRequestHeaders | The agent will add any required headers to this object.

virtual TBool ContentAccess::CAgentManager::RecognizeFileL | ( | const TDesC & | aFileName,
 |  | const TDesC8 & | aBuffer,
 |  | TDes8 & | aFileMimeType,
 |  | TDes8 & | aContentMimeType
 | ) | const [pure virtual]

Determines whether the file is recognized by this agent.

If it is the agent will fill in the file mime type and content mime type.

The agent should attempt to recognized the file in an efficient manner It should avoid opening the file to provide the best performance.

The agent SHOULD NOT perform any API policing on this API since it will be called from within the Apparc server's process.

If a file is recognized, the file mime type should always be set to the correct value. For the content mime type there are three special cases:

  • If the file needs to be imported through the Supplier API before it can be used then the agent should leave the aContentMimeType parameter blank (zero length).
  • If the file has no embedded content, eg an image/jpeg (.jpg) file the agent should leave the aContentMimeType parameter blank (zero length).
  • If more than one content object is contained within the file, the agent will set aContentMimeType to "application/x-caf" indicating it is an archive that can be navigated by CAF regardless of the actual file format.
Parameters:
aFileName | The name of the file to recognize. The name is examined, not the file itself.
aBuffer | Buffer containing bytes from the start of the file.
aFileMimeType | Used to return the mime type of the file to the caller.
aContentMimeType | Used to return the mime type of the content embedded within the file to the caller. This field should be zero length if there is no embedded content.
Returns:
Whether or not the file was recognized.

ETrue if the file is handled by this agent. The aFileMimeType and aContentMimeType were updated.

EFalse if the file was not recognized by this agent.

virtual IMPORT_C TInt ContentAccess::CAgentManager::RenameDir | ( | const TDesC & | aOldName,
 |  | const TDesC & | aNewName
 | ) | [virtual]

Rename a directory.

This function can be used to rename a directory from within the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aOldName | The existing pathname of the directory to rename.
aNewName | The new pathname of the directory.
Returns:
The outcome of the RenameDir operation.

KErrNone if the directory was removed successfully.

KErrAccessDenied f the agent does not allow the directory to be removed.

KErrCANotSupported if the agent does not support directory removal.

KErrPermissionDenied if the client does not have the necessary capabilities to remove directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual TInt ContentAccess::CAgentManager::RenameFile | ( | const TDesC & | aSource,
 |  | const TDesC & | aDestination
 | ) | [pure virtual]

Rename or move the content file (eg to removable media) belonging to this agent.

Access to the agent private directories is permitted at the agents discretion.

Parameters:
aSource | The full pathname of the source file.
aDestination | The full pathname of the destination file.
Returns:
The outcome of the Rename operation.

KErrNone if the file was moved or renamed successfully.

KErrAccessDenied if the agent does not allow the file to be moved or renamed.

KErrCANotSupported if the agent does not support file renaming.

KErrPermissionDenied if the client does not have the necessary capabilities to move or rename the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Moving DRM protected files is not permitted for processes without DRM capability. Moving unprotected files is permitted

virtual TInt ContentAccess::CAgentManager::RmDir ( const TDesC & aPath ) [pure virtual]

Remove a directory.

This function can be used to remove a directory from within the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aPath The full pathname of the directory to remove.
Returns:
The outcome of the RmDir operation.

KErrNone if the directory was removed successfully.

KErrAccessDenied if the agent does not allow the directory to be removed.

KErrCANotSupported if the agent does not support directory removal.

KErrPermissionDenied if the client does not have the necessary capabilities to remove directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

virtual TInt ContentAccess::CAgentManager::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) | [pure virtual]

Allows an application to request the modification of a property within the agent.

The agent may or may not permit the property to be changed

Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
The outcome of the set property command.

KErrNone if the property was set by all agents.

KErrCANotSupported if one of the agent does not support the property or value.

KErrAccessDenied if one of the agents does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

The documentation for this class was generated from the following file:
  • agentinterface.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CAgentRightsManager Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CAgentRightsManager

ContentAccess::CAgentRightsManager Class Reference

Manages and retrieves rights objects from an agent. More...

#include <agentinterface.h>

List of all members.

Public Member Functions

virtual void | ListAllRightsL (RStreamablePtrArray< CRightsInfo > &aArray) const =0
List all rights held by the agent.
virtual void | ListRightsL (RStreamablePtrArray< CRightsInfo > &aArray, const TDesC &aUri) const =0
List all rights associated with a particular file.
virtual void | ListRightsL (RStreamablePtrArray< CRightsInfo > &aArray, TVirtualPathPtr &aVirtualPath) const =0
List all rights associated with a particular content object.
virtual void | ListContentL (RStreamablePtrArray< CVirtualPath > &aArray, CRightsInfo &aRightsInfo) const =0
List all content associated with a particular rights object.
virtual MAgentRightsBase * | GetRightsDataL (const CRightsInfo &aRightsInfo) const =0
This will be used by applications to retrieve an agent specific rights object.
virtual TInt | DeleteRightsObject (const CRightsInfo &aRightsInfo)=0
Asks the DRM agent to delete a rights object.
virtual TInt | DeleteAllRightsObjects (const TVirtualPathPtr &aVirtualPath)=0
Deletes all rights associated with a particular content object.
virtual TInt | SetProperty (TAgentProperty aProperty, TInt aValue)=0
Allows an application to request the modification of a property within the agent.

Detailed Description

Manages and retrieves rights objects from an agent.

Interface: publishedPartner
Interface: released

Member Function Documentation

virtual TInt ContentAccess::CAgentRightsManager::DeleteAllRightsObjects ( const TVirtualPathPtr & aVirtualPath ) [pure virtual]

Deletes all rights associated with a particular content object.

The agent may display a dialog asking the user to confirm the delete. Execution will be blocked until the dialog is complete. Applications can request to disable the agents user interface using the SetProperty() command

Parameters:
aVirtualPath The path of the content object.
Returns:
The outcome of the delete operation.

KErrNone if the rights were deleted.

KErrNotFound if no rights objects exist for the specified content object.

KErrCancel if the user cancels an agent supplied confirmation dialog.

KErrPermissionDenied if the agent does not permit the client to access rights information.

Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual TInt ContentAccess::CAgentRightsManager::DeleteRightsObject ( const CRightsInfo & aRightsInfo ) [pure virtual]

Asks the DRM agent to delete a rights object.

The agent may display a dialog asking the user to confirm the delete. Execution will be blocked until the dialog is complete. Applications can request to disable the agents user interface using the SetProperty() command

Parameters:
aRightsInfo The rights object.
Returns:
The outcome of the delete operation.

KErrNone if the rights were deleted.

KErrCancel if the user cancels an agent supplied confirmation dialog.

KErrNotFound if the rights object does not exist.

KErrPermissionDenied if the agent does not permit the client to access rights information.

Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual MAgentRightsBase* ContentAccess::CAgentRightsManager::GetRightsDataL ( const CRightsInfo & aRightsInfo ) const [pure virtual]

This will be used by applications to retrieve an agent specific rights object.

Parameters:
aRightsInfo The rights object.
Returns:
An agent specific rights object.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentRightsManager::ListAllRightsL ( RStreamablePtrArray< CRightsInfo > & aArray ) const [pure virtual]

List all rights held by the agent.

Parameters:
aArray The client supplied array used to store the CRightsInfo objects. The agent will add CRightsInfo objects to the supplied array.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentRightsManager::ListContentL | ( | RStreamablePtrArray< CVirtualPath > & | aArray,
 |  | CRightsInfo & | aRightsInfo
 | ) | const [pure virtual]

List all content associated with a particular rights object.

Parameters:
aArray | The client supplied array used to store the list of content objects. The agent will add CVirtualPath objects to the supplied array.
aRightsInfo | The rights object.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentRightsManager::ListRightsL | ( | RStreamablePtrArray< CRightsInfo > & | aArray,
 |  | TVirtualPathPtr & | aVirtualPath
 | ) | const [pure virtual]

List all rights associated with a particular content object.

Parameters:
aArray | The client supplied array used to store the CRightsInfo objects. The agent will add CRightsInfo objects to the supplied array.
aVirtualPath | The content object.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual void ContentAccess::CAgentRightsManager::ListRightsL | ( | RStreamablePtrArray< CRightsInfo > & | aArray,
 |  | const TDesC & | aUri
 | ) | const [pure virtual]

List all rights associated with a particular file.

Parameters:
aArray | The client supplied array used to store the CRightsInfo objects. The agent will add CRightsInfo objects to the supplied array.
aUri | The name of the file.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

virtual TInt ContentAccess::CAgentRightsManager::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) | [pure virtual]

Allows an application to request the modification of a property within the agent.

The agent may or may not permit the property to be changed

Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
KErrNone if the property was set.

KErrCANotSupported if the agent does not support the property or value.

KErrAccessDenied if the agent does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

The documentation for this class was generated from the following file:
  • agentinterface.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CContent Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CContent

ContentAccess::CContent Class Reference

CContent allows applications to browse the content objects contained within a single file and construct a CData object for reading that content. More...

#include <content.h>

Collaboration diagram for ContentAccess::CContent:

[legend]
List of all members.

Public Member Functions

virtual | ~CContent ()
destructor
IMPORT_C TInt | OpenContainer (const TDesC &aUniqueId)
Open a Container object within the file.
IMPORT_C TInt | CloseContainer ()
Close the current container object and go back to previous enclosing container within the file.
IMPORT_C void | GetEmbeddedObjectsL (RStreamablePtrArray< CEmbeddedObject > &aArray) const
List all the embedded container objects and content objects within the current container.
IMPORT_C void | GetEmbeddedObjectsL (RStreamablePtrArray< CEmbeddedObject > &aArray, TEmbeddedType aType) const
List all the embedded objects within the current container that are of the specified type.
IMPORT_C TInt | Search (RStreamablePtrArray< CEmbeddedObject > &aArray, const TDesC8 &aMimeType, TBool aRecursive)
Search the current container for content objects with a particular mime type.
IMPORT_C TInt | GetAttribute (TInt aAttribute, TInt &aValue) const
Get an attribute for the default content object within the file.
IMPORT_C TInt | GetAttribute (TInt aAttribute, TInt &aValue, const TDesC &aUniqueId) const
Get an attribute for an object within the file.
IMPORT_C TInt | GetAttributeSet (RAttributeSet &aAttributeSet) const
Get a set of attributes for the default content object within the file.
IMPORT_C TInt | GetAttributeSet (RAttributeSet &aAttributeSet, const TDesC &aUniqueId) const
Get a set of attributes from an object within the file.
IMPORT_C TInt | GetStringAttribute (TInt aAttribute, TDes &aValue) const
Get text string attributes or meta-data for the default content object within the file.
IMPORT_C TInt | GetStringAttribute (TInt aAttribute, TDes &aValue, const TDesC &aUniqueId) const
Get text string attributes or meta-data for an object within the file.
IMPORT_C TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet) const
Obtain a set of string attributes for the default content object within the file.
IMPORT_C TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet, const TDesC &aUniqueId) const
Used to obtain a set of string attributes for an object within the file.
IMPORT_C TInt | AgentSpecificCommand (TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer)
Allows extended synchronous calls to the CAF agent handling this file.
IMPORT_C void | AgentSpecificCommand (TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus)
Allows extended synchronous calls to the CAF agent handling this file Applications familiar with the agent can pass objects in and out using serialization.
IMPORT_C void | NotifyStatusChange (TEventMask aMask, TRequestStatus &aStatus)
Request notification for an event for the default content object within the file.
IMPORT_C void | NotifyStatusChange (TEventMask aMask, TRequestStatus &aStatus, const TDesC &aUniqueId)
Request notification for an event for an object within the file.
IMPORT_C TInt | CancelNotifyStatusChange (TRequestStatus &aStatus)
Cancel a previous notification request for the default content object.
IMPORT_C TInt | CancelNotifyStatusChange (TRequestStatus &aStatus, const TDesC &aUniqueId)
Cancel a previous notification request.
IMPORT_C void | RequestRights (TRequestStatus &aStatus)
Request the agent to obtain rights for the default content object.
IMPORT_C void | RequestRights (TRequestStatus &aStatus, const TDesC &aUniqueId)
Request the agent to obtain rights for a protected content object.
IMPORT_C TInt | CancelRequestRights (TRequestStatus &aStatus)
Cancel a previous RequestRights() request for the default content object.
IMPORT_C TInt | CancelRequestRights (TRequestStatus &aStatus, const TDesC &aUniqueId)
Cancel a previous RequestRights() request.
IMPORT_C void | DisplayInfoL (TDisplayInfo aInfo) const
View information associated with the default content object.
IMPORT_C void | DisplayInfoL (TDisplayInfo aInfo, const TDesC &aUniqueId) const
View information associated with a single content object.
IMPORT_C TInt | SetProperty (TAgentProperty aProperty, TInt aValue)
Request the agent handling this content to set a property value.
IMPORT_C CData * | OpenContentL (TIntent aIntent)
Grants read access to the default content object based on evaluation of the supplied intent information.
IMPORT_C CData * | OpenContentLC (TIntent aIntent)
Grants read access to the default content object based on evaluation of the supplied intent information.
IMPORT_C CData * | OpenContentL (TIntent aIntent, const TDesC &aUniqueId)
Grants read access to the content object based on evaluation of the supplied intent information.
IMPORT_C CData * | OpenContentLC (TIntent aIntent, const TDesC &aUniqueId)
Grants read access to the content object based on evaluation of the supplied intent information.
IMPORT_C const TAgent & | Agent () const
Find out which agent is handling this file.

Static Public Member Functions

static IMPORT_C CContent * | NewLC (const TDesC &aURI)
Constructs a new CContent object with a given URI.
static IMPORT_C CContent * | NewL (const TDesC &aURI)
Constructs a new CContent object with a given URI.
static IMPORT_C CContent * | NewLC (const TDesC &aURI, TContentShareMode aShareMode)
Constructs a new CContent object with a given URI.
static IMPORT_C CContent * | NewL (const TDesC &aURI, TContentShareMode aShareMode)
Constructs a new CContent object with a given URI.
static IMPORT_C CContent * | NewLC (RFile &aFile)
Constructs a new CContent object with an open file handle.
static IMPORT_C CContent * | NewL (RFile &aFile)
Constructs a new CContent object with an open file handle.

Detailed Description

CContent allows applications to browse the content objects contained within a single file and construct a CData object for reading that content.

Applications will use an object of this type rather than the traditional RFile mechanisms. They will, however, be required to indicate DRM Intent - something that determines whether (and how) access to the content should be permitted by a Content-Access agent.

CContent allows direct access to meta-data such as the attributes of the content and indirect access to the plaintext data itself through the CData class.

Applications can use CContent to browse the hierarchy of content objects within a file containing several content objects.

During construction CContent loads the correct CAF Agent plugin to handle the file specified by the URI.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CContent::~CContent ( ) [virtual]

destructor

Member Function Documentation

IMPORT_C const TAgent& ContentAccess::CContent::Agent ( ) const

Find out which agent is handling this file.

Returns:
The agent handling the File
Capability:
DRM Access to DRM agents is not permitted for processes without DRM capability

IMPORT_C void ContentAccess::CContent::AgentSpecificCommand | ( | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer,
 |  | TRequestStatus & | aStatus
 | ) |

Allows extended synchronous calls to the CAF agent handling this file Applications familiar with the agent can pass objects in and out using serialization.

NB: It is important that the descriptor passed to aOutputBuffer remains in scope until the request has completed.

Parameters:
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the command was successfully executed. KErrCANotSupported if the agent does not recognize the command. KErrOverflow if the output buffer supplied is too small. KErrPermissionDenied if the agent does not allow the client to execute the command. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::AgentSpecificCommand | ( | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer
 | ) |

Allows extended synchronous calls to the CAF agent handling this file.

Applications familiar with the agent can pass objects in and out using serialization.

Parameters:
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
Returns:
The outcome of the agent specific command.

KErrCANotSupported if the agent does not recognize the command.

KErrOverflow if the output buffer supplied is too small.

KErrPermissionDenied if the agent does not allow the client to execute the command.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::CancelNotifyStatusChange | ( | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) |

Cancel a previous notification request.

Parameters:
aStatus | The TRequestStatus supplied in the call to NotifyStatusChange().
aUniqueId | The UniqueId of the content object within the file.
Returns:
The outcome of the cancel request.

KErrNone if the request was cancelled.

KErrNotFound if there was no matching request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::CancelNotifyStatusChange ( TRequestStatus & aStatus )

Cancel a previous notification request for the default content object.

Parameters:
aStatus The TRequestStatus supplied in the call to NotifyStatusChange().
Returns:
The outcome of the cancel request.

KErrNone if the request was cancelled.

KErrNotFound if there was no matching request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::CancelRequestRights | ( | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) |

Cancel a previous RequestRights() request.

Parameters:
aStatus | The TRequestStatus that was supplied to the RequestRights() function.
aUniqueId | The objects Unique Id that was supplied to the RequestRights() function.
Returns:
The result of the cancel rights request.

KErrNone if the rights request was cancelled.

KErrNotFound if there was no matching rights request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::CancelRequestRights ( TRequestStatus & aStatus )

Cancel a previous RequestRights() request for the default content object.

Parameters:
aStatus The TRequestStatus that was supplied to the RequestRights() function.
Returns:
The result of the cancel rights request.

KErrNone if the rights request was cancelled.

KErrNotFound if there was no matching rights request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::CloseContainer ( )

Close the current container object and go back to previous enclosing container within the file.

Allows an application to access the content objects and any nested container objects within parent container.

Returns:
Whether the container was closed.

KErrNone if the container was closed.

KErrNotFound if there is no enclosing container.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C void ContentAccess::CContent::DisplayInfoL | ( | TDisplayInfo | aInfo,
 |  | const TDesC & | aUniqueId
 | ) | const

View information associated with a single content object.

This call blocks execution and only returns once the display is dismissed by the user.

See also:
ContentAccess::TDisplayInfo
Parameters:
aInfo | The information to display.
aUniqueId | The unique id of the object within the file.
Leave:
KErrCANotSupported if information cannot be displayed or does not exist.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C void ContentAccess::CContent::DisplayInfoL ( TDisplayInfo aInfo ) const

View information associated with the default content object.

This call blocks execution and only returns once the display is dismissed by the user.

See also:
ContentAccess::TDisplayInfo
Parameters:
aInfo The information to display.
Leave:
KErrCANotSupported if information cannot be displayed or does not exist.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue,
 |  | const TDesC & | aUniqueId
 | ) | const

Get an attribute for an object within the file.

See also:
ContentAccess::TAttribute
                TInt value = 0;
                CContent* c = CContent::NewL(uri);
                TInt err =c->GetAttribute(EIsProtected, value, uniqueId);
                if(err == KErrNone && value)
                        {
                        DisplayPadLock();
                        }

Parameters:
aAttribute | The attribute to query, from ContentAccess::TAttribute.
aValue | Used to return the attribute value.
aUniqueId | The UniqueId of the object within the file.
Returns:
Whether the attribute value was updated.

KErrNone if the value of the attribute was updated.

KErrNotFound if the object with the given UniqueId was not found.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue
 | ) | const

Get an attribute for the default content object within the file.

See also:
ContentAccess::TAttribute
                TInt value = 0;
                CContent* c = CContent::NewL(uri);
                TInt err =c->GetAttribute(EIsProtected, value);
                if(err == KErrNone && value)
                        {
                        DisplayPadLock();
                        }

Parameters:
aAttribute | The attribute to query, from ContentAccess::TAttribute.
aValue | Used to return the attribute value.
Returns:
Whether the attribute value was updated.

KErrNone if the value of the attribute was updated.

KErrNotFound if the object with the given UniqueId was not found.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetAttributeSet | ( | RAttributeSet & | aAttributeSet,
 |  | const TDesC & | aUniqueId
 | ) | const

Get a set of attributes from an object within the file.

See also:
ContentAccess::TAttribute
The following example determines whether the default content object is protected and has rights that will enable it to be viewed by the user

                CContent* content = CContent::NewLC(uri);

                RAttributeSet attributeSet;
                CleanupClosePushL(attributeSet);
                attributeSet->AddL(EProtected);
                attributeSet->AddL(ECanView);

                User::LeaveIfError(content->GetAttributeSet(attributeSet, uniqueId);

                TInt err = attributeSet.GetValue(EProtected, value);
                if(err == KErrNone && value)
                                {
                                // file is DRM protected
                                }

                err = attributeSet.GetValue(ECanView, value);
                if(err == KErrNone && value)
                                {
                                // File has rights that allow it to be displayed on screen
                                }

                // Finished
                CleanupStack::PopAndDestroy(2); // content, attributeSet.Close()

Parameters:
aAttributeSet | The set of attributes to query and update.
aUniqueId | The unique ID of the object within the file.
Returns:
Whether that attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the default content object was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetAttributeSet ( RAttributeSet & aAttributeSet ) const

Get a set of attributes for the default content object within the file.

See also:
ContentAccess::TAttribute
The following example determines whether the default content object is protected and has rights that will enable it to be viewed by the user

                CContent* content = CContent::NewLC(uri);

                RAttributeSet attributeSet;
                CleanupClosePushL(attributeSet);
                attributeSet->AddL(EProtected);
                attributeSet->AddL(ECanView);

                User::LeaveIfError(content->GetAttributeSet(attributeSet);

                TInt err = attributeSet.GetValue(EProtected, value);
                if(err == KErrNone && value)
                                {
                                // file is DRM protected
                                }

                err = attributeSet.GetValue(ECanView, value);
                if(err == KErrNone && value)
                                {
                                // File has rights that allow it to be displayed on screen
                                }

                // Finished
                CleanupStack::PopAndDestroy(2); // content, attributeSet.Close()

Parameters:
aAttributeSet The set of attributes to query and update.
Returns:
Whether the attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the default content object was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C void ContentAccess::CContent::GetEmbeddedObjectsL | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray,
 |  | TEmbeddedType | aType
 | ) | const

List all the embedded objects within the current container that are of the specified type.

                // Create a ccontent object for the file of interest
                CContent* content = CContent::NewLC(uri);

                // Define an array to store the results
                RStreamablePtrArray <CEmbeddedObject> array;
                CleanupClosePushL(array);

                // Find all the content objects within the current container
                content->GetEmbeddedObjectsL(array, EContentObject);

                // Do something with the array
                ....

                // Finished
                CleanupStack::PopAndDestroy(2);

Parameters:
aArray | The array to be populated with the embedded objects.
aType | The type of objects to list.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C void ContentAccess::CContent::GetEmbeddedObjectsL ( RStreamablePtrArray< CEmbeddedObject > & aArray ) const

List all the embedded container objects and content objects within the current container.

The UniqueId() member of CEmbeddedObject can be used to refer directly to a particular object within the file.

                // Create a ccontent object for the file of interest
                CContent* content = CContent::NewLC(uri);

                // Define an array to store the results
                RStreamablePtrArray <CEmbeddedObject> array;
                CleanupClosePushL(array);

                // Find all the content and container objects within the current container
                content->GetEmbeddedObjectsL(array);

                // Do something with the array
                ....

                // Finished
                CleanupStack::PopAndDestroy(2);

Parameters:
aArray The array to be populated with the embedded objects.
Leave:
KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue,
 |  | const TDesC & | aUniqueId
 | ) | const

Get text string attributes or meta-data for an object within the file.

See also:
ContentAccess::TStringAttribute
                TInt err = KErrNone;

                CContent* c = CContent::NewL(uri);
                TBuf <MAX_PATH> previewUri;
                err = c->GetStringAttribute(EPreviewURI, previewUri, uniqueId);
                if(err == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

Parameters:
aAttribute | The attribute to query, from ContentAccess::TStringAttribute.
aValue | Returns the value of the attribute.
aUniqueId | The UniqueId of the object within the file.
Returns:
Whether the attribute value was updated.

KErrNone if the attribute was retrieved.

KErrNotFound if the object with the given UniqueId was not found.

KErrOverflow if the buffer was not large enough to return the result.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue
 | ) | const

Get text string attributes or meta-data for the default content object within the file.

See also:
ContentAccess::TStringAttribute
                TInt err = KErrNone;

                CContent* c = CContent::NewL(uri);
                TBuf <MAX_PATH> previewUri;
                err = c->GetStringAttribute(EPreviewURI, previewUri);
                if(err == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

Parameters:
aAttribute | The attribute to query, from ContentAccess::TStringAttribute.
aValue | Returns the value of the attribute.
Returns:
Whether the attribute value was updated.

KErrNone if the attribute was retrieved.

KErrNotFound if the default content object was not found.

KErrOverflow if the buffer was not large enough to return the result.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetStringAttributeSet | ( | RStringAttributeSet & | aStringAttributeSet,
 |  | const TDesC & | aUniqueId
 | ) | const

Used to obtain a set of string attributes for an object within the file.

See also:
ContentAccess::TStringAttribute
                CContent* content = CContent::NewLC(uri);

                // create the attribute set, add the attributes we are interested in
                RStringAttributeSet stringAttributeSet;
                CleanupClosePushL(stringAttributeSet);
                stringAttributeSet.AddL(EPreviewURI);
                stringAttributeSet.AddL(ETitle);

                User::LeaveIfError(content->GetStringAttributeSet(stringAttributeSet, uniqueId));

                // Pass the value of the string attribute to DisplayPreview()
                TFileName previewUri;
                TInt err = stringAttributeSet.GetValue(EPreviewURI, previewUri);
                if(err == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

                CleanupStack::PopAndDestroy(2); // content, stringAttributeSet.Close()

Parameters:
aStringAttributeSet | The set of attributes to query and update.
aUniqueId | The UniqueId of the container or content.
Returns:
Whether the attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the object with the given UniqueId was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::GetStringAttributeSet ( RStringAttributeSet & aStringAttributeSet ) const

Obtain a set of string attributes for the default content object within the file.

See also:
ContentAccess::TStringAttribute
                CContent* content = CContent::NewLC(uri);

                // create the attribute set, add the attributes we are interested in
                RStringAttributeSet stringAttributeSet;
                CleanupClosePushL(stringAttributeSet);
                stringAttributeSet.AddL(EPreviewURI);
                stringAttributeSet.AddL(ETitle);

                User::LeaveIfError(content->GetStringAttributeSet(stringAttributeSet));

                // Pass the value of the string attribute to DisplayPreview()
                TFileName previewUri;
                TInt err = stringAttributeSet.GetValue(EPreviewURI, previewUri);
                if(err == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

                CleanupStack::PopAndDestroy(2); // content, stringAttributeSet.Close()

Parameters:
aStringAttributeSet The set of attributes to query and update.
Returns:
Whether the attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the default content object was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

static IMPORT_C CContent* ContentAccess::CContent::NewL ( RFile & aFile ) [static]

Constructs a new CContent object with an open file handle.

CContent will use a duplicate of this file handle, the client is free to close its file handle any time after creating the CContent object.

Parameters:
aFile The file handle. The file must already be open before calling this method.
Returns:
a new CContent object.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

static IMPORT_C CContent* ContentAccess::CContent::NewL | ( | const TDesC & | aURI,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Constructs a new CContent object with a given URI.

The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr

Parameters:
aURI | The filename, URI or virtual path of the DRM file.
aShareMode | The sharing mode used when accessing the content.
Returns:
a new CContent object.
Leave:
KErrNotFound If the file at the given URI does not exist or if an invalid URI or virtual path have been supplied.
Leave:
KErrAccessDenied If the file is already open with a different share mode.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

static IMPORT_C CContent* ContentAccess::CContent::NewL ( const TDesC & aURI ) [static]

Constructs a new CContent object with a given URI.

The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr

Parameters:
aURI The filename, URI or virtual path of the DRM file.
Returns:
a new CContent object.
Leave:
KErrNotFound If the file at the given URI does not exist or if an invalid URI or virtual path have been supplied.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

static IMPORT_C CContent* ContentAccess::CContent::NewLC ( RFile & aFile ) [static]

Constructs a new CContent object with an open file handle.

CContent will use a duplicate of this file handle, the client is free to close its file handle any time after creating the CContent object.

Parameters:
aFile The file handle. The file must already be open before calling NewLC.
Returns:
a new CContent object.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

static IMPORT_C CContent* ContentAccess::CContent::NewLC | ( | const TDesC & | aURI,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Constructs a new CContent object with a given URI.

The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr

Parameters:
aURI | The filename, URI or virtual path of the DRM file.
aShareMode | The sharing mode used when accessing the content.
Returns:
a new CContent object.
Leave:
KErrNotFound If the file at the given URI does not exist or if an invalid URI or virtual path have been supplied.
Leave:
KErrAccessDenied If the file is already open with a different share mode.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

static IMPORT_C CContent* ContentAccess::CContent::NewLC ( const TDesC & aURI ) [static]

Constructs a new CContent object with a given URI.

The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr

Parameters:
aURI The filename, URI or virtual path of the DRM file.
Returns:
a new CContent object.
Leave:
KErrNotFound If the file at the given URI does not exist or if an invalid URI or virtual path have been supplied.
Leave:
KErrPermissionDenied If the access to the protected content is not permitted by the CAF Agent.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C void ContentAccess::CContent::NotifyStatusChange | ( | TEventMask | aMask,
 |  | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) |

Request notification for an event for an object within the file.

See also:
ContentAccess::TEventMask
Parameters:
aMask | Bitmask of events the caller is interested in.
aStatus | The TRequestStatus object to complete if the event occurs.
aUniqueId | The UniqueId of the container or content.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C void ContentAccess::CContent::NotifyStatusChange | ( | TEventMask | aMask,
 |  | TRequestStatus & | aStatus
 | ) |

Request notification for an event for the default content object within the file.

See also:
ContentAccess::TEventMask
Parameters:
aMask | Bitmask of events the caller is interested in.
aStatus | The TRequestStatus object to complete if the event occurs.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::OpenContainer ( const TDesC & aUniqueId )

Open a Container object within the file.

Allows an application to access the content objects and any nested container objects within the specified container.

Parameters:
aUniqueId The container object's unique ID.
Returns:
Whether the container was opened.

KErrNone if the container was opened successfully.

KErrNotFound if the container does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C CData* ContentAccess::CContent::OpenContentL | ( | TIntent | aIntent,
 |  | const TDesC & | aUniqueId
 | ) |

Grants read access to the content object based on evaluation of the supplied intent information.

Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().

A CData object can be obtained as follows:

                 CData* MyData = myContent->OpenContentL(ChosenIntent, uniqueId);
                 ...
                 delete MyData; // when finished accessing plaintext content

See also:
ContentAccess::TIntent
Parameters:
aIntent | The intent indicator.
aUniqueId | The object to open for reading. If the UniqueId is set to KNullDesC16() the entire file will be opened for reading with no transformation.
Returns:
A CData instance. The caller gets ownership of this object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C CData* ContentAccess::CContent::OpenContentL ( TIntent aIntent )

Grants read access to the default content object based on evaluation of the supplied intent information.

Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().

A CData object can be obtained as follows:

                 CData* MyData = myContent->OpenContentL(ChosenIntent);
                 ...
                 delete MyData; // when finished accessing plaintext content

See also:
ContentAccess::TIntent
Parameters:
aIntent The intent indicator.
Returns:
A CData instance. The caller gets ownership of this object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C CData* ContentAccess::CContent::OpenContentLC | ( | TIntent | aIntent,
 |  | const TDesC & | aUniqueId
 | ) |

Grants read access to the content object based on evaluation of the supplied intent information.

Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().

A CData object can be obtained as follows:

                 CData* MyData = myContent->OpenContentLC(ChosenIntent, uniqueId);
                 ...
                 PopAndDestroy(MyData); // when finished accessing plaintext content

See also:
ContentAccess::TIntent
Parameters:
aIntent | The intent indicator.
aUniqueId | The object to open for reading. If the UniqueId is set to KNullDesC16() the entire file will be opened for reading with no transformation.
Returns:
A CData instance. The caller gets ownership of this object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C CData* ContentAccess::CContent::OpenContentLC ( TIntent aIntent )

Grants read access to the default content object based on evaluation of the supplied intent information.

Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().

A CData object can be obtained as follows:

                 CData* myData = myContent->OpenContentLC(ChosenIntent);
                 ...
                 // when finished accessing plaintext content
                 CleanupStack::PopAndDestroy(myData);

See also:
ContentAccess::TIntent
Parameters:
aIntent The intent indicator.
Returns:
A CData instance. The caller gets ownership of this object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C void ContentAccess::CContent::RequestRights | ( | TRequestStatus & | aStatus,
 |  | const TDesC & | aUniqueId
 | ) |

Request the agent to obtain rights for a protected content object.

This request may be handled differently by different agents. Some agents may open a browser and direct the user to a URL. Others may download and install the rights in the background.

The call should not block execution, applications can wait for a notification if they are interested in the outcome.

Parameters:
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the rights request was successful. KErrCANotSupported if the agent does not allow rights requests. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
aUniqueId | The unique id of the object within the file.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C void ContentAccess::CContent::RequestRights ( TRequestStatus & aStatus )

Request the agent to obtain rights for the default content object.

This request may be handled differently by different agents. Some agents may open a browser and direct the user to a URL. Others may download and install the rights in the background.

The call should not block execution, applications can wait for a notification if they are interested in the outcome.

Parameters:
aStatus Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the rights request was successful. KErrCANotSupported if the agent does not allow rights requests. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CContent::Search | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray,
 |  | const TDesC8 & | aMimeType,
 |  | TBool | aRecursive
 | ) |

Search the current container for content objects with a particular mime type.

                _LIT8(KTextPlainMimeType, "text/plain");

                // Create a ccontent object for the file of interest
                CContent* content = CContent::NewLC(uri);

                // Define an array to store the results
                RStreamablePtrArray <CEmbeddedObject> array;
                CleanupClosePushL(array);

                // Recursively search for all the content objects with the
                // specified mime type
                User::LeaveIfError(content->Search(array, KTextPlainMimeType(), ETrue));

                // Do something with the array
                ....

                // Finished
                CleanupStack::PopAndDestroy(2);

Parameters:
aArray | The array to store the results of the search. The agent will add CEmbeddedObject objects to the supplied array.
aMimeType | The mime type to search for.
aRecursive | ETrue to search inside containers embedded within the current container, EFalse to search only the current container.
Returns:
The result of the search.

KErrNone if the search was successful, even if no content objects were found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CContent::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) |

Request the agent handling this content to set a property value.

If the property is set it is only set for this CContent session and does not impact other CAF users and is not set for CData products created by the CContent.

See also:
ContentAccess::TAgentProperty
Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
Whether the property was set.

KErrNone if the property was set.

KErrCANotSupported if the agent does not support the property or value.

KErrAccessDenied if the agent does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

The documentation for this class was generated from the following file:
  • content.h
Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CData Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CData

ContentAccess::CData Class Reference

Allows clients to read data from a content object. More...

#include <data.h>

Collaboration diagram for ContentAccess::CData:

[legend]
List of all members.

Public Member Functions

virtual | ~CData ()
destructor
IMPORT_C TInt | Read (TDes8 &aDes) const
Reads from a content object up to the maximum length of the descriptor or the end of the content object.
IMPORT_C TInt | Read (TDes8 &aDes, TInt aLength) const
Reads from a content object up to the specified length of the descriptor or the end of the content object.
IMPORT_C void | Read (TDes8 &aDes, TRequestStatus &aStatus) const
Read content asynchronously up to the maximum length of the descriptor or until the end of the content object is reached.
IMPORT_C void | Read (TDes8 &aDes, TInt aLength, TRequestStatus &aStatus) const
Read content asynchronously up to the specified length or until the end of the content object is reached.
IMPORT_C TInt | Read (TInt aPos, TDes8 &aDes, TInt aLength, TRequestStatus &aStatus) const
Reads content asynchronously.
IMPORT_C void | DataSizeL (TInt &aSize)
Gets the data size in bytes.
IMPORT_C TInt | Seek (TSeek aMode, TInt &aPos) const
Changes or retrieves the location of the file pointer within the content object.
IMPORT_C TInt | SetProperty (TAgentProperty aProperty, TInt aValue)
Request the agent handling this content to set a property value.
IMPORT_C TInt | EvaluateIntent (TIntent aIntent)
Allows a client to verify that the intent is supported by the current rights for the data object.
IMPORT_C TInt | ExecuteIntent (TIntent aIntent)
Execute intent allows the application to signal it is about to carry out the specified intent on protected content.The agent will decrement applicable stateful rights such as play counts where necessary.
IMPORT_C TInt | GetAttribute (TInt aAttribute, TInt &aValue) const
Get an attribute for the content object.
IMPORT_C TInt | GetAttributeSet (RAttributeSet &aAttributeSet) const
Get a set of attributes for the content object.
IMPORT_C TInt | GetStringAttribute (TInt aAttribute, TDes &aValue) const
Get text string attributes or meta-data for the content object.
IMPORT_C TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet) const
Obtain a set of string attributes for the content object.

Static Public Member Functions

static IMPORT_C CData * | NewL (const TVirtualPathPtr &aVirtualPath, TIntent aIntent, TContentShareMode aShareMode)
Creates a new CData object.
static IMPORT_C CData * | NewL (const TVirtualPathPtr &aVirtualPath, TContentShareMode aShareMode)
Creates a new CData object.
static IMPORT_C CData * | NewLC (const TVirtualPathPtr &aVirtualPath, TIntent aIntent, TContentShareMode aShareMode)
Creates a new CData object.
static IMPORT_C CData * | NewLC (const TVirtualPathPtr &aVirtualPath, TContentShareMode aShareMode)
Creates a new CData object.
static IMPORT_C CData * | NewL (RFile &aFile, const TDesC &aUniqueId, TIntent aIntent)
Creates a new CData object.
static IMPORT_C CData * | NewL (RFile &aFile, const TDesC &aUniqueId)
Creates a new CData object.
static IMPORT_C CData * | NewLC (RFile &aFile, const TDesC &aUniqueId, TIntent aIntent)
Creates a new CData object.
static IMPORT_C CData * | NewLC (RFile &aFile, const TDesC &aUniqueId)
Creates a new CData object.
static CData * | NewLC (TUid aAgentUid, const TVirtualPathPtr &aVirtualPath, TIntent aIntent, TContentShareMode aShareMode)
Creates a new CData object.
static CData * | NewLC (TUid aAgentUid, RFile &aFile, const TDesC &aUniqueId, TIntent aIntent)
Creates a new CData object.

Detailed Description

Allows clients to read data from a content object.

This class is initialised with an agent implementation that is responsible for this content object.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CData::~CData ( ) [virtual]

destructor

Member Function Documentation

IMPORT_C void ContentAccess::CData::DataSizeL ( TInt & aSize )

Gets the data size in bytes.

Parameters:
aSize On return this will contain the size of the plaintext data in bytes.
Leave:
KErrCASizeNotDetermined Size could not be determined by the managing agent.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::EvaluateIntent ( TIntent aIntent )

Allows a client to verify that the intent is supported by the current rights for the data object.

Note:
Since the intent is only evaluated the agent will not decrement any rights-state such as play counts.
See also:
ContentAccess::TIntent
Parameters:
aIntent The intended way the content will be used.
Returns:
Whether rights exist allowing the content to be used for this intent.

KErrNone if the intent is permitted.

KErrNoRights if no rights exist for the specified content object.

KErrCANoPermission if rights exist but the specified intent is not permitted.

KErrCAPendingRights if the rights have not yet arrived but are expected soon.

KErrNoPermission if rights exist but none permit the specified intent.

KErrPermissionDenied if the client is not allowed to use this content object.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::ExecuteIntent ( TIntent aIntent )

Execute intent allows the application to signal it is about to carry out the specified intent on protected content.The agent will decrement applicable stateful rights such as play counts where necessary.

Applications should be very careful to use this function correctly.

  • If ExecuteIntent() is never called stateful rights will never be decremented. Users will be able to use the content forever
  • If ExecuteIntent() is called too often stateful rights may be consumed prematurely.
Usually it would be best to call ExecuteIntent immediately before the content is displayed or the instant playback begins. ExecuteIntent should not be considered a prerequisite for calling the Read functions. It is valid for an application to read from the file before calling ExecuteIntent.

Note:
Since rights are executed here the agent will decrement any rights-state such as play counts that apply.
Parameters:
aIntent The intent indicator.
Returns:
The result of attempting executing the intent.

KErrNone if the intent is permitted and stateful rights may have been decremented.

KErrNoRights if no rights exist for the specified content object.

KErrCANoPermission if rights exist but the specified intent is not permitted.

KErrCAPendingRights if the rights have not yet arrived but are expected soon.

KErrNoPermission if rights exist but none permit the specified intent.

KErrPermissionDenied if the client is not allowed to use this content object.

Otherwise one of the other CAF error codes defined in caferr.h or one of the. other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue
 | ) | const

Get an attribute for the content object.

See also:
ContentAccess::TAttribute
                CContent* content = CContent::NewL(uri);
                CData* data = content->OpenContentL(EPlay, uniqueId);
                delete content;

                TInt value = 0;
                TInt err = data->GetAttribute(EIsProtected, value);
                if(err == KErrNone && value)
                        {
                        DisplayPadLock();
                        }

                delete data;

Parameters:
aAttribute | The attribute to query, from ContentAccess::TAttribute.
aValue | Used to return the attribute value.
Returns:
Whether the attribute was updated.

KErrNone if the value of the attribute was updated.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::GetAttributeSet ( RAttributeSet & aAttributeSet ) const

Get a set of attributes for the content object.

See also:
ContentAccess::TAttribute
The following example determines whether the content object is protected and has rights that will enable it to be viewed by the user

                // CData* data = a data object

                RAttributeSet attributeSet;
                CleanupClosePushL(attributeSet);
                attributeSet->AddL(EProtected);
                attributeSet->AddL(ECanView);

                User::LeaveIfError(data->GetAttributeSet(attributeSet);

                TInt err = attributeSet.GetValue(EProtected, value);
                if(err == KErrNone && value)
                                {
                                // file is DRM protected
                                }

                err = attributeSet.GetValue(ECanView, value);
                if(err == KErrNone && value)
                                {
                                // File has rights that allow it to be displayed on screen
                                }

                // Finished
                CleanupStack::PopAndDestroy();  // attributeSet.Close()

Parameters:
aAttributeSet The set of attributes to query and update.
Returns:
Whether the attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue
 | ) | const

Get text string attributes or meta-data for the content object.

See also:
ContentAccess::TStringAttribute
                CContent* content = CContent::NewLC(uri);
                CData* data = content->OpenContentLC(EPlay, uniqueId);
                CleanupStack::PopAndDestroy(content);

                TBuf <MAX_PATH> previewUri;
                TInt err = data->GetStringAttribute(EPreviewURI, previewUri);
                if(err == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

                CleanupStack::PopAndDestroy(data);

Parameters:
aAttribute | The attribute to query, from ContentAccess::TStringAttribute.
aValue | Returns the value of the attribute.
Returns:
Whether the value was updated.

KErrNone if the attribute was retrieved.

KErrOverflow if the buffer was not large enough to return the result.

KErrCANotSupported if the requested attribute does not exist.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::GetStringAttributeSet ( RStringAttributeSet & aStringAttributeSet ) const

Obtain a set of string attributes for the content object.

See also:
ContentAccess::TStringAttribute
                CContent* content = CContent::NewLC(uri);
                CData* data = content->OpenContentLC(EPlay, uniqueId);

                // create the attribute set, add the attributes we are interested in
                RStringAttributeSet stringAttributeSet;
                CleanupClosePushL(stringAttributeSet);
                stringAttributeSet.AddL(EPreviewURI);
                stringAttributeSet.AddL(ETitle);

                User::LeaveIfError(data->GetStringAttributeSet(stringAttributeSet));

                // Pass the value of the string attribute to DisplayPreview()
                TFileName previewUri;
                TInt err = stringAttributeSet.GetValue(EPreviewURI, previewUri);
                if(err == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

                CleanupStack::PopAndDestroy(3); // content, data, stringAttributeSet

Parameters:
aStringAttributeSet The set of attributes to query and update.
Returns:
Whether the string attribute set was updated.

KErrNone if the attributes were retrieved successfully.

KErrNotFound if the default content object was not found.

KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

static IMPORT_C CData* ContentAccess::CData::NewL | ( | RFile & | aFile,
 |  | const TDesC & | aUniqueId
 | ) | [static]

Creates a new CData object.

Parameters:
aFile | An open RFile handle, the agent will make a duplicate of this handle.
aUniqueId | The content object to read.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static IMPORT_C CData* ContentAccess::CData::NewL | ( | RFile & | aFile,
 |  | const TDesC & | aUniqueId,
 |  | TIntent | aIntent
 | ) | [static]

Creates a new CData object.

Parameters:
aFile | An open RFile handle, the agent will make a duplicate of this handle.
aUniqueId | The content object to read.
aIntent | The intended use of the content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static IMPORT_C CData* ContentAccess::CData::NewL | ( | const TVirtualPathPtr & | aVirtualPath,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Creates a new CData object.

Parameters:
aVirtualPath | The content object to read.
aShareMode | The file share mode used to open this content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static IMPORT_C CData* ContentAccess::CData::NewL | ( | const TVirtualPathPtr & | aVirtualPath,
 |  | TIntent | aIntent,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Creates a new CData object.

Parameters:
aVirtualPath | The content object to read
aIntent | The intended use of the content.
aShareMode | The file share mode used to open this content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static CData* ContentAccess::CData::NewLC | ( | TUid | aAgentUid,
 |  | RFile & | aFile,
 |  | const TDesC & | aUniqueId,
 |  | TIntent | aIntent
 | ) | [static]

Creates a new CData object.

Parameters:
aAgentUid | The Uid of the agent who supports this content.
aFile | An open RFile handle, the agent will make a duplicate of this handle.
aUniqueId | The content object to read.
aIntent | The intended use of the content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Interface: internalComponent
Interface: released

static CData* ContentAccess::CData::NewLC | ( | TUid | aAgentUid,
 |  | const TVirtualPathPtr & | aVirtualPath,
 |  | TIntent | aIntent,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Creates a new CData object.

Parameters:
aAgentUid | The agent determined to support this content.
aVirtualPath | The content object to read.
aIntent | The intended use of the content.
aShareMode | The file share mode used to open this content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Interface: internalComponent
Interface: released

static IMPORT_C CData* ContentAccess::CData::NewLC | ( | RFile & | aFile,
 |  | const TDesC & | aUniqueId
 | ) | [static]

Creates a new CData object.

Parameters:
aFile | An open RFile handle, the agent will make a duplicate of this handle.
aUniqueId | The content object to read.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static IMPORT_C CData* ContentAccess::CData::NewLC | ( | RFile & | aFile,
 |  | const TDesC & | aUniqueId,
 |  | TIntent | aIntent
 | ) | [static]

Creates a new CData object.

Parameters:
aFile | An open RFile handle, the agent will make a duplicate of this handle.
aUniqueId | The content object to read.
aIntent | The intended use of the content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static IMPORT_C CData* ContentAccess::CData::NewLC | ( | const TVirtualPathPtr & | aVirtualPath,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Creates a new CData object.

Parameters:
aVirtualPath | The content object to read.
aShareMode | The file share mode used to open this content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

static IMPORT_C CData* ContentAccess::CData::NewLC | ( | const TVirtualPathPtr & | aVirtualPath,
 |  | TIntent | aIntent,
 |  | TContentShareMode | aShareMode
 | ) | [static]

Creates a new CData object.

Parameters:
aVirtualPath | The content object to read.
aIntent | The intended use of the content.
aShareMode | The file share mode used to open this content.
Returns:
The new CData object.
Leave:
KErrNotFound The content object with the given UniqueId does not exist.
Leave:
KErrCAPendingRights The rights have not yet arrived but are expected soon.
Leave:
KErrCANoPermission Rights exist but the specified intent is not permitted.
Leave:
KErrCANoRights No rights exist for the content object.
Leave:
KErrCANotSupported Unable to open the object with the specified UniqueId, it may be a container object.
Leave:
KErrPermissionDenied The agent does not allow the client to access the content object.
Leave:
KErrAccessDenied The content is already in use.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

IMPORT_C TInt ContentAccess::CData::Read | ( | TInt | aPos,
 |  | TDes8 & | aDes,
 |  | TInt | aLength,
 |  | TRequestStatus & | aStatus
 | ) | const

Reads content asynchronously.

The data is read from a specified offset up to a specified number of bytes or until the end of the content object is reached. The data is read into the descriptor buffer supplied. NB: It is important that the descriptor passed to aDes remains in scope until the request has completed.

See also:
Read(TDes8& aDes)
Parameters:
aPos | Position of first byte to be read. This is an offset from the start of the file.
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aLength | The number of bytes to read from the file, or to the end of the file, whichever is encountered first. The length of the buffer is set to the number of bytes actually read.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was successfully read. Otherwise one of the CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Returns:
KErrNone if the async read request was successfully submitted.

KErrArgument if a negative offset is supplied.

KErrCANotSupported if the agent does not support this operation.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C void ContentAccess::CData::Read | ( | TDes8 & | aDes,
 |  | TInt | aLength,
 |  | TRequestStatus & | aStatus
 | ) | const

Read content asynchronously up to the specified length or until the end of the content object is reached.

NB: It is important that the descriptor passed to aDes remains in scope until the request has completed.

See also:
Read(TDes8& aDes)
Parameters:
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aLength | The number of bytes to read from the file, or to the end of the file, whichever is encountered first. The length of the buffer is set to the number of bytes actually read.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was successfully read. Otherwise one of the CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C void ContentAccess::CData::Read | ( | TDes8 & | aDes,
 |  | TRequestStatus & | aStatus
 | ) | const

Read content asynchronously up to the maximum length of the descriptor or until the end of the content object is reached.

NB: It is important that the descriptor passed to aDes remains in scope until the request has completed.

See also:
Read(TDes8& aDes)
Parameters:
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was successfully read. Otherwise one of the CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::Read | ( | TDes8 & | aDes,
 |  | TInt | aLength
 | ) | const

Reads from a content object up to the specified length of the descriptor or the end of the content object.

See also:
Read(TDes8& aDes)
Parameters:
aDes | Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
aLength | The number of bytes to read from the file, or to the end of the file, whichever is encountered first. The length of the buffer is set to the number of bytes actually read.
Returns:
KErrNone if successful.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::Read ( TDes8 & aDes ) const

Reads from a content object up to the maximum length of the descriptor or the end of the content object.

When an attempt is made to read beyond the end of the content, no error is returned. The descriptor’s length is set to the number of bytes that were read into it. Therefore, when reading through content, the end has been reached when the descriptor length (given by TDesC::Length()) is zero.

Parameters:
aDes Descriptor into which binary data is read. Any existing contents are overwritten. On return, its length is set to the number of bytes read.
Returns:
KErrNone if successful.

One of the CAF error codes defined in caferr.h or one of the other system-wide error codes.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::Seek | ( | TSeek | aMode,
 |  | TInt & | aPos
 | ) | const

Changes or retrieves the location of the file pointer within the content object.

NOTE: Some operations may fail if the content data is sourced over a network connection.

There are four seek modes used:

  • ESeekStart - Sets the file pointer aPos bytes from the start of the content object. aPos is not modified by the call to Seek()
  • ESeekEnd - Sets the file pointer aPos bytes from the end of the content object. The aPos parameter supplied should be zero or negative when using ESeekEnd. Upon completion aPos is updated with the current position relative to the start of the content object.
  • ESeekCurrent - Moves the file pointer aPos bytes from the current position. Upon completion aPos is updated with the new position relative to the start of the content object. Suppling a zero value for the aPos Parameter can be used to retrieve the current file pointer location
  • ESeekAddress Sets the aPos parameter to the address of the byte aPos bytes from the start of the content object
See also:
TSeek
Parameters:
aMode | Seek mode - controls the destination of the seek operation.
aPos | Offset from either the start, end or current position depending upon the seek mode. Negative offsets are used to seek before the current position or relative to the end of the file.
Returns:
KErrNone if successful.

Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CData::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) |

Request the agent handling this content to set a property value.

If the property is set it is only set for this CData session and does not impact other CAF users.

For example setting the buffer-size to 256 bytes can be achieved as follows:

                                        MyData->SetProperty(EAgentPropertyBufferSize, 256);

See also:
ContentAccess::TAgentProperty
Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
Whether or not the property was set.

KErrNone if the property was set.

KErrCANotSupported if the agent does not support the property or value.

KErrAccessDenied if the agent does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

The documentation for this class was generated from the following file:
  • data.h
Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CDirStreamable Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CDirStreamable

ContentAccess::CDirStreamable Class Reference

Emulates the behavior of a CDir object with the addition of streaming. More...

#include <dirstreamable.h>

List of all members.

Public Member Functions

virtual | ~CDirStreamable ()
IMPORT_C void | AddL (const TEntry &aEntry)
Add an entry.
IMPORT_C TInt | Count () const
The number of file system entries in the CDirStreamable.
IMPORT_C const TEntry & | operator[] (TInt aIndex) const
Retrieve the file system entry at a particular index.
IMPORT_C TInt | Sort (TUint aEntrySortKey)
Sort the entries in the specified order.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Write this CDirStreamable to a stream.

Static Public Member Functions

static IMPORT_C CDirStreamable * | NewL ()
Constuct an empty CDirStreamable.
static IMPORT_C CDirStreamable * | NewL (CDir &aDir)
Construct a CDirStreamable object from the result of a call to RFs::GetDir().
static IMPORT_C CDirStreamable * | NewL (RReadStream aStream)
Construct a CDirStreamable object from a stream.

Detailed Description

Emulates the behavior of a CDir object with the addition of streaming.

Functions are not virtual and do not override the CDir functions so most of the time this class will be used as if it was a CDir. It is only when used explicitly as a CDirStreamable that any additional functionality is invoked

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CDirStreamable::~CDirStreamable ( ) [virtual]

Member Function Documentation

IMPORT_C void ContentAccess::CDirStreamable::AddL ( const TEntry & aEntry )

Add an entry.

Parameters:
aEntry The directory entry to add

IMPORT_C TInt ContentAccess::CDirStreamable::Count ( ) const

The number of file system entries in the CDirStreamable.

Returns:
The number of TEntry objects in the CDirStreamable

IMPORT_C void ContentAccess::CDirStreamable::ExternalizeL ( RWriteStream & aStream ) const

Write this CDirStreamable to a stream.

Parameters:
aStream The stream to write to

static IMPORT_C CDirStreamable* ContentAccess::CDirStreamable::NewL ( RReadStream aStream ) [static]

Construct a CDirStreamable object from a stream.

Parameters:
aStream The stream to read the CDirStreamable object from
Returns:
A new CDirStreamable object

static IMPORT_C CDirStreamable* ContentAccess::CDirStreamable::NewL ( CDir & aDir ) [static]

Construct a CDirStreamable object from the result of a call to RFs::GetDir().

Parameters:
aDir A CDir object which has been constructed by a previous call to RFs::GetDir()
Returns:
A new CDirStreamable object

static IMPORT_C CDirStreamable* ContentAccess::CDirStreamable::NewL ( ) [static]

Constuct an empty CDirStreamable.

Returns:
a CDirStreamable with no entries

IMPORT_C const TEntry& ContentAccess::CDirStreamable::operator[] ( TInt aIndex ) const

Retrieve the file system entry at a particular index.

See also:
TEntry
Parameters:
aIndex The entry to retrieve
Returns:
A reference to the TEntry stored by the CDirStreamable

IMPORT_C TInt ContentAccess::CDirStreamable::Sort ( TUint aEntrySortKey )

Sort the entries in the specified order.

Parameters:
aEntrySortKey A TEntryKey value used to sort the array.
Returns:
KErrNone if sort was successful

The documentation for this class was generated from the following file:
  • dirstreamable.h
Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CEmbeddedObject Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CEmbeddedObject

ContentAccess::CEmbeddedObject Class Reference

Represents a content object embedded within a file The agent defined uniqueId field describes the location of the object within the file. More...

#include <EmbeddedObject.h>

List of all members.

Public Member Functions

virtual | ~CEmbeddedObject ()
destructor
IMPORT_C const TDesC & | UniqueId () const
The agent defined UniqueId.
IMPORT_C const TDesC & | Name () const
User friendly name of the object.
IMPORT_C TEmbeddedType | Type () const
The type of object.
IMPORT_C const TDesC8 & | MimeType () const
Mime type of the object.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Allow the class write itself out to a stream.

Static Public Member Functions

static IMPORT_C CEmbeddedObject * | NewL (const TDesC &aUniqueId, const TDesC &aName, const TDesC8 &aMimeType, TEmbeddedType aType)
Create a new CEmbeddedObject with a different name and uniqueId.
static IMPORT_C CEmbeddedObject * | NewL (const TDesC &aUniqueId, const TDesC8 &aMimeType, TEmbeddedType aType)
Create a new CEmbeddedObject where the Name field is the same as the uniqueId.
static IMPORT_C CEmbeddedObject * | NewL (RReadStream &aStream)
Create a new CEmbeddedObject from a stream.

Detailed Description

Represents a content object embedded within a file The agent defined uniqueId field describes the location of the object within the file.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CEmbeddedObject::~CEmbeddedObject ( ) [virtual]

destructor

Member Function Documentation

IMPORT_C void ContentAccess::CEmbeddedObject::ExternalizeL ( RWriteStream & aStream ) const

Allow the class write itself out to a stream.

Parameters:
aStream The stream to write to

IMPORT_C const TDesC8& ContentAccess::CEmbeddedObject::MimeType ( ) const

Mime type of the object.

Returns:
The mime type of the object or KNullDesC8() if this is a container object

IMPORT_C const TDesC& ContentAccess::CEmbeddedObject::Name ( ) const

User friendly name of the object.

Returns:
The name of the object

static IMPORT_C CEmbeddedObject* ContentAccess::CEmbeddedObject::NewL ( RReadStream & aStream ) [static]

Create a new CEmbeddedObject from a stream.

Parameters:
aStream The stream to read the CEmbeddedObject from
Returns:
a CEmbeddedObject

static IMPORT_C CEmbeddedObject* ContentAccess::CEmbeddedObject::NewL | ( | const TDesC & | aUniqueId,
 |  | const TDesC8 & | aMimeType,
 |  | TEmbeddedType | aType
 | ) | [static]

Create a new CEmbeddedObject where the Name field is the same as the uniqueId.

Parameters:
aUniqueId | The UniqueId of the embedded object
aMimeType | The mime type of the object (if it not a container object)
aType | The type of object (Content, container, agentspecific etc)
Returns:
a CEmbeddedObject

static IMPORT_C CEmbeddedObject* ContentAccess::CEmbeddedObject::NewL | ( | const TDesC & | aUniqueId,
 |  | const TDesC & | aName,
 |  | const TDesC8 & | aMimeType,
 |  | TEmbeddedType | aType
 | ) | [static]

Create a new CEmbeddedObject with a different name and uniqueId.

Parameters:
aUniqueId | The UniqueId of the embedded object
aName | A user friendly name for the object
aMimeType | The mime type of the object (if it not a container object)
aType | The type of object (Content, container, agentspecific etc)
Returns:
a CEmbeddedObject

IMPORT_C TEmbeddedType ContentAccess::CEmbeddedObject::Type ( ) const

The type of object.

Returns:
The type

IMPORT_C const TDesC& ContentAccess::CEmbeddedObject::UniqueId ( ) const

The agent defined UniqueId.

Returns:
The uniqueId

The documentation for this class was generated from the following file:
  • EmbeddedObject.h
Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CF32AgentUi Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CF32AgentUi

ContentAccess::CF32AgentUi Class Reference

Interface that must be implemented in order for the F32 agent to display information on the screen. More...

#include <f32agentui.h>

List of all members.

Public Member Functions

virtual TBool | ConfirmDeleteL (const TDesC &aFileName)=0
The implementation of this API will display a dialog asking the user to confirm deletion of a file.
virtual void | DisplayInfoL (TInt aInfo, RFile &aFile)=0
Display information describing the supplied file.
virtual TInt | SetProperty (TInt aProperty, TInt aValue)=0
The implementation of this API will action/remember Agent properties applicable to the Agent UI.

Detailed Description

Interface that must be implemented in order for the F32 agent to display information on the screen.

Member Function Documentation

virtual TBool ContentAccess::CF32AgentUi::ConfirmDeleteL ( const TDesC & aFileName ) [pure virtual]

The implementation of this API will display a dialog asking the user to confirm deletion of a file.

The implementation will display the dialog if the appropriate setting, TAgentProperty::EAgentPropertyAgentUI, has been set using CF32AgentUi::SetProperty, enabling the Agent UI. If the user selects to delete the file ETrue will be returned, EFalse if the file is not to be deleted. If the Agent UI is not enabled a default value of ETrue will be returned.

The function should only return once the dialog has completed

Parameters:
aFileName The name of the file that is about to be deleted
Returns:
Whether to delete the file

ETrue If the file is to be deleted

EFalse If the file is not to be deleted

virtual void ContentAccess::CF32AgentUi::DisplayInfoL | ( | TInt | aInfo,
 |  | RFile & | aFile
 | ) | [pure virtual]

Display information describing the supplied file.

The file will already be open before calling this function. The function should only return once the dialog has completed

Parameters:
aInfo | The information to display, from ContentAccess::TDisplayInfo
aFile | The file to display
Returns:
KErrNone or one of the system wide error codes

virtual TInt ContentAccess::CF32AgentUi::SetProperty | ( | TInt | aProperty,
 |  | TInt | aValue
 | ) | [pure virtual]

The implementation of this API will action/remember Agent properties applicable to the Agent UI.

Currently the F32 Agent only supports one UI property - TAgentProperty::EAgentPropertyAgentUI, enabling or disabling the Agent UI. The implementation of this function should store the property that has been set and subsequent requests to the interface should be dealt with in accordance with these properties.

See also:
CF32AgentUi::ConfirmDeleteL
The implementation will return KErrNone if the property has been set correctly or KErrCANotSupported if the property supplied is not supported.

Parameters:
aProperty | The property to set, from ContentAccess::TAgentProperty
aValue | The value of the property
Returns:
Whether the property was set

KErrNone if the property was set correctly

KErrCANotSupported if the property is not supported

The documentation for this class was generated from the following file:
  • f32agentui.h
Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CImportFile Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CImportFile

ContentAccess::CImportFile Class Reference

Created by the CSupplier to import a file. More...

#include <importfile.h>

Collaboration diagram for ContentAccess::CImportFile:

[legend]
List of all members.

Public Member Functions

virtual | ~CImportFile ()
Destructor - deleting the CImportFile instance before calling WriteComplete() aborts the import operation.
IMPORT_C TInt | WriteData (const TDesC8 &aData)
Write a block of data from a file to an agent.
IMPORT_C void | WriteData (const TDesC8 &aData, TRequestStatus &aStatus)
Asynchronously write a block of data from a file to an agent.
IMPORT_C TInt | WriteDataComplete ()
Signals to the agent that the entire file has now been transferred to the agent.
IMPORT_C void | WriteDataComplete (TRequestStatus &aStatus)
Signals to the agent that the entire file has now been transferred to the agent.
IMPORT_C TInt | OutputFileCountL () const
Gets the number of output files produced so far.
IMPORT_C CSupplierOutputFile & | OutputFileL (TInt aIndex) const
Return information about an output file generated by the import operation.
IMPORT_C TImportStatus | GetImportStatus () const
Retrieve the import status.
IMPORT_C TInt | GetSuggestedOutputFileExtension (TDes &aFileExtension)
Get the agents suggestion for the file extension of the output file required by the agent.
IMPORT_C TInt | GetSuggestedOutputFileName (TDes &aFileName)
Get the agents suggestion for the file name (with extension) of the output file required by the agent.
IMPORT_C TInt | ContinueWithNewOutputFile (RFile &aFile, const TDesC &aFileName)
Continue the last write operation with a new file handle as requested by the agent.
IMPORT_C void | ContinueWithNewOutputFile (RFile &aFile, const TDesC &aFileName, TRequestStatus &aStatus)
Continue the last write operation with a new file handle and return the result asynchronously.
IMPORT_C void | Cancel ()
Cancel an outstanding asynchronous request to WriteData() or WriteDataComplete().

Friends

class | CSupplier

Detailed Description

Created by the CSupplier to import a file.

The mime type of the file must be one of the CAF supplier mime types. Applications should check using CSupplier::IsImportSupported().

This class creates a CAgentSupplier and uses it to import the file into the content access agent who supports the given mime type.

This class is single use only and cannot be used to import multiple files. The import process may result in one or more output files.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CImportFile::~CImportFile ( ) [virtual]

Destructor - deleting the CImportFile instance before calling WriteComplete() aborts the import operation.

Member Function Documentation

IMPORT_C void ContentAccess::CImportFile::Cancel ( )

Cancel an outstanding asynchronous request to WriteData() or WriteDataComplete().

IMPORT_C void ContentAccess::CImportFile::ContinueWithNewOutputFile | ( | RFile & | aFile,
 |  | const TDesC & | aFileName,
 |  | TRequestStatus & | aStatus
 | ) |

Continue the last write operation with a new file handle and return the result asynchronously.

NB: It is important that the handle passed to aFile and the descriptor passed to aFileName remain in scope until the request has completed.

Parameters:
aFile | A new file handle opened with write permission.
aFileName | The name of the file handle that has been supplied. This is used by the agent when creating CSupplierOutputFile objects. It should include the full path and filename in order to be consistent with files generated by the agent
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the WriteData() or WriteDataComplete() operation is now complete. KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile(). Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

IMPORT_C TInt ContentAccess::CImportFile::ContinueWithNewOutputFile | ( | RFile & | aFile,
 |  | const TDesC & | aFileName
 | ) |

Continue the last write operation with a new file handle as requested by the agent.

Parameters:
aFile | A new file handle opened with write permission.
aFileName | The name of the file handle that has been supplied. This is used by the agent when creating CSupplierOutputFile objects. It should include the full path and filename in order to be consistent with files generated by the agent.
Returns:
The result of the continuing write operation.

KErrNone if the WriteData() or WriteDataComplete() operation is now complete.

KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile().

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

IMPORT_C TImportStatus ContentAccess::CImportFile::GetImportStatus ( ) const

Retrieve the import status.

Used to indicate non fatal problems encountered during the import operation. Provides feedback to the client in case any problems are encountered.

The client can then decide whether or not to continue the import.

Returns:
The state of the import operation.

IMPORT_C TInt ContentAccess::CImportFile::GetSuggestedOutputFileExtension ( TDes & aFileExtension )

Get the agents suggestion for the file extension of the output file required by the agent.

This function should only be called when the agent has returned KErrCANewFileHandleRequired from WriteData() or WriteDataComplete().

The extension must include the dot '.' character.

Parameters:
aFileExtension On completion this will contain the appropriate file extension.
Returns:
The result of the request for a file extension.

KErrNone if the agent populated aFileExtension with the correct file extension.

KErrNotReady if the agent is not waiting for another file handle to be provided.

KErrUnknown if the agent does not know what extension should be used.

IMPORT_C TInt ContentAccess::CImportFile::GetSuggestedOutputFileName ( TDes & aFileName )

Get the agents suggestion for the file name (with extension) of the output file required by the agent.

This function should only be called when the agent has returned KErrCANewFileHandleRequired from WriteData() or WriteDataComplete().

The file name is of the form filename.extension.

Parameters:
aFileName On completion this will contain the appropriate file name.
Returns:
KErrNone if the agent populated aFileName with the correct file name.

KErrNotReady if the agent is not waiting for another file handle to be provided.

KErrUnknown if the agent does not know what file name should be used.

IMPORT_C TInt ContentAccess::CImportFile::OutputFileCountL ( ) const

Gets the number of output files produced so far.

Returns:
The number of output files.

IMPORT_C CSupplierOutputFile& ContentAccess::CImportFile::OutputFileL ( TInt aIndex ) const

Return information about an output file generated by the import operation.

It is possible that the output file does not have the same name as the one suggested at the beginning of the import. An agent may need to use a particular file extension or a particular name.

The agent may decide not to store the output file in the output directory suggested at the start of the import. eg. it may store the file in its private server directory.

The output files may only appear in this array after the WriteDataComplete() function has been called.

Parameters:
aIndex The zero-based index of the file (must be less than the value returned by OutputFileCountL().
Returns:
The CSupplierOutputFile for this object.

IMPORT_C void ContentAccess::CImportFile::WriteData | ( | const TDesC8 & | aData,
 |  | TRequestStatus & | aStatus
 | ) |

Asynchronously write a block of data from a file to an agent.

Notifies the client when the write operation is complete. NB: It is important that the descriptor passed to aData remains in scope until the request has completed.

Parameters:
aData | The block of data.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was written successfully. KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile(). KErrCorrupt if the file does not match the format the agent is expecting. KErrNotReady if the agent was not expecting WriteDataComplete() to be called at this point. Otherwise one of the other CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.

IMPORT_C TInt ContentAccess::CImportFile::WriteData ( const TDesC8 & aData )

Write a block of data from a file to an agent.

Parameters:
aData The block of data.
Returns:
The result of the write operation.

KErrNone if the data was written successfully.

KErrCANewFileHandleRequired if the agent requires the client to provide a new file handle before proceeding. The agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile().

KErrCorrupt if the file does not match the format the agent is expecting.

KErrNotReady if the agent was not expecting WriteData() to be called at this point.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

IMPORT_C void ContentAccess::CImportFile::WriteDataComplete ( TRequestStatus & aStatus )

Signals to the agent that the entire file has now been transferred to the agent.

Notifies the client when any final processing operation is complete.

Parameters:
aStatus Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the data was written successfully. KErrCANewFileHandleRequired if the agent requires a new file handle before proceeding - the agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile(). KErrCorrupt if the file does not match the format the agent is expecting. KErrNotReady if the agent was not expecting WriteDataComplete() to be called at this point. Otherwise one of the other CAF error codes defined in caferr.h or one of the other standard system-wide error codes for any other errors.

IMPORT_C TInt ContentAccess::CImportFile::WriteDataComplete ( )

Signals to the agent that the entire file has now been transferred to the agent.

Returns:
The result of the write operation.

KErrNone if the data was written successfully.

KErrCANewFileHandleRequired if the agent requires the client to provide a new file handle before proceeding. The agent must save its state and continue processing when the new handle is supplied by ContinueWithNewOutputFile().

KErrCorrupt if the file does not match the format the agent is expecting.

KErrNotReady if the agent was not expecting WriteDataComplete() to be called at this point.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Friends And Related Function Documentation

friend class CSupplier [friend]

The documentation for this class was generated from the following file:
  • importfile.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CManager Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CManager

ContentAccess::CManager Class Reference

Manages files and content access agents. More...

#include <manager.h>

List of all members.

Public Member Functions

virtual | ~CManager ()
destructor
IMPORT_C TInt | DeleteFile (const TDesC &aFileName) const
Delete a file on the device.
IMPORT_C TInt | CopyFile (const TDesC &aSource, const TDesC &aDestination) const
Make a copy of a file (eg to removable media).
IMPORT_C TInt | CopyFile (RFile &aSourceFile, const TDesC &aDestination) const
Make a copy of a file (eg to removable media) using a file handle.
IMPORT_C TInt | RenameFile (const TDesC &aSource, const TDesC &aDestination) const
Rename or move the content file (eg to removable media).
IMPORT_C TInt | MkDir (const TDesC &aPath) const
Create a directory.
IMPORT_C TInt | MkDirAll (const TDesC &aPath) const
Create all directories in the given path if they do not exist.
IMPORT_C TInt | RmDir (const TDesC &aPath) const
Remove a directory.
IMPORT_C TInt | RenameDir (const TDesC &aOldName, const TDesC &aNewName) const
Rename a directory.
IMPORT_C TInt | GetDir (const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList) const
Gets a filtered list of a directory's contents.
IMPORT_C TInt | GetDir (const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList, CDir *&aDirList) const
Gets a filtered list of the directory and file entries contained in a directory and a list of the directory entries only.
IMPORT_C TInt | GetDir (const TDesC &aName, const TUidType &aEntryUid, TUint aEntrySortKey, CDir *&aFileList) const
Gets a filtered list of a directory's contents by UID.
IMPORT_C TInt | GetAttribute (TInt aAttribute, TInt &aValue, const TVirtualPathPtr &aVirtualPath) const
Get an attribute from a content object.
IMPORT_C TInt | GetAttributeSet (RAttributeSet &aAttributeSet, const TVirtualPathPtr &aVirtualPath) const
Get a set of attributes from a content object.
IMPORT_C TInt | GetStringAttribute (TInt aAttribute, TDes &aValue, const TVirtualPathPtr &aVirtualPath) const
Get text string attributes or meta-data from the file.
IMPORT_C TInt | GetStringAttributeSet (RStringAttributeSet &aStringAttributeSet, const TVirtualPathPtr &aVirtualPath) const
Used to obtain a set of string attributes.
IMPORT_C void | NotifyStatusChange (const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus)
Notify the caller when the status of a DRM protected content object changes.
IMPORT_C TInt | CancelNotifyStatusChange (const TDesC &aURI, TRequestStatus &aStatus)
Cancel a previous notification request.
IMPORT_C TInt | SetProperty (TAgentProperty aProperty, TInt aValue)
Request all agents to set a property value.
IMPORT_C void | DisplayInfoL (TDisplayInfo aInfo, const TVirtualPathPtr &aVirtualPath)
View information associated with a single content object.
IMPORT_C void | ListAgentsL (RArray< TAgent > &aAgents)
List all the agents installed on the device (except F32Agent).
IMPORT_C TInt | AgentSpecificCommand (TAgent &aAgent, TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer)
Allows extended synchronous calls to an agent.
IMPORT_C void | AgentSpecificCommand (TAgent &aAgent, TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus)
Allows extended asynchronous calls to an agent.
IMPORT_C void | DisplayManagementInfoL (TAgent &aAgent)
Allows a client to display management information for a particular agent.
IMPORT_C CRightsManager * | CreateRightsManagerL (TAgent &aAgent) const
Allow clients to list, view and delete the rights contained by an agent in a generic manner.

Static Public Member Functions

static IMPORT_C CManager * | NewL ()
Creates a CManager.
static IMPORT_C CManager * | NewLC ()
Creates a CManager.

Detailed Description

Manages files and content access agents.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CManager::~CManager ( ) [virtual]

destructor

Member Function Documentation

IMPORT_C void ContentAccess::CManager::AgentSpecificCommand | ( | TAgent & | aAgent,
 |  | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer,
 |  | TRequestStatus & | aStatus
 | ) |

Allows extended asynchronous calls to an agent.

NB: It is important that the descriptor passed to aOutputBuffer remains in scope until the request has completed.

Parameters:
aAgent | The agent.
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the command was successful. KErrCANotSupported if the agent does not recognize the command. KErrPermissionDenied if the agent does not permit the client to execute this command. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to extended DRM agent functions is not permitted for processes without DRM capability

IMPORT_C TInt ContentAccess::CManager::AgentSpecificCommand | ( | TAgent & | aAgent,
 |  | TInt | aCommand,
 |  | const TDesC8 & | aInputBuffer,
 |  | TDes8 & | aOutputBuffer
 | ) |

Allows extended synchronous calls to an agent.

Parameters:
aAgent | The agent.
aCommand | The agent defined command.
aInputBuffer | Non modifyable input data buffer.
aOutputBuffer | Modifyable output buffer to hold the result of the command.
Returns:
The outcome of the agent specific command.

KErrNone if the command was successful.

KErrCANotSupported if the agent does not recognize the command.

KErrPermissionDenied if the agent does not permit the client to execute this command.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to extended DRM agent functions is not permitted for processes without DRM capability

IMPORT_C TInt ContentAccess::CManager::CancelNotifyStatusChange | ( | const TDesC & | aURI,
 |  | TRequestStatus & | aStatus
 | ) |

Cancel a previous notification request.

Parameters:
aURI | The URI supplied in the call to NotifyStatusChange().
aStatus | The TRequestStatus supplied in the call to NotifyStatusChange().
Returns:
The outcome of the cancel request.

KErrNone if the notification was cancelled.

KErrNotFound if there was no matching request outstanding.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

IMPORT_C TInt ContentAccess::CManager::CopyFile | ( | RFile & | aSourceFile,
 |  | const TDesC & | aDestination
 | ) | const

Make a copy of a file (eg to removable media) using a file handle.

Access to the agents private directory is permitted at the agents discretion.

Parameters:
aSourceFile | The handle the source file.
aDestination | The full pathname of the destination file.
Returns:
The outcome of the copy operation.

KErrNone if the file was copied successfully.

KErrAccessDenied if the agent does not allow the file to be copied.

KErrCANotSupported if the agent does not support file copying.

KErrPermissionDenied if the client does not have the necessary capabilities to copy the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Copying DRM protected files is not permitted for processes without DRM capability. Copying unprotected files is permitted

IMPORT_C TInt ContentAccess::CManager::CopyFile | ( | const TDesC & | aSource,
 |  | const TDesC & | aDestination
 | ) | const

Make a copy of a file (eg to removable media).

Access to the agents private directory is permitted at the agents discretion.

Parameters:
aSource | The full pathname of the source file.
aDestination | The full pathname of the destination file.
Returns:
The outcome of the copy operation.

KErrNone if the file was copied successfully.

KErrAccessDenied if the agent does not allow the file to be copied.

KErrCANotSupported if the agent does not support file copying.

KErrPermissionDenied if the client does not have the necessary capabilities to copy the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Copying DRM protected files is not permitted for processes without DRM capability. Copying unprotected files is permitted

IMPORT_C CRightsManager* ContentAccess::CManager::CreateRightsManagerL ( TAgent & aAgent ) const

Allow clients to list, view and delete the rights contained by an agent in a generic manner.

This function is only relevant for agents implementing a DRM scheme. Other agents will leave with KErrCANotSupported if an application attempts to invoke the rights manager.

To manage the rights in a more comprehensive manner the application should use the DisplayManagementInfoL() function where the agent can present its own management information.

Parameters:
aAgent The agent to create a rights manager object.
Returns:
A CRightsManager object for the specified agent.
Leave:
KErrCANotSupported If the agent does not implement DRM or support rights management.
Leave:
KErrPermissionDenied If the agent does not allow the client to create a rights manager.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C TInt ContentAccess::CManager::DeleteFile ( const TDesC & aFileName ) const

Delete a file on the device.

The agent who manages the file will be used to delete it.

In the case of a DRM agent implementation it may delete rights that were associated with the file at the same time. If an agent deletes rights at the same time as the content it will display a confirmation dialog that makes it clear that the rights will be also deleted.

Access to the agent private directories is permitted at the agents discretion.

Parameters:
aFileName The full pathname of the file to delete.
Returns:
The outcome of the delete operation.

KErrNone if the file was deleted successfully.

KErrCancel if the user selects cancel in an agent supplied confirmation screen.

KErrAccessDenied if the agent does not allow the file to be deleted.

KErrCANotSupported if the agent does not support file deletion

KErrPermissionDenied if the client does not have the necessary capabilities to delete the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Deleting DRM protected content is not permitted for processes without DRM capability.

IMPORT_C void ContentAccess::CManager::DisplayInfoL | ( | TDisplayInfo | aInfo,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) |

View information associated with a single content object.

This call blocks execution and only returns once the display is dismissed by the user

See also:
ContentAccess::TDisplayInfo
Parameters:
aInfo | The information to display.
aVirtualPath | The content object.
Leave:
KErrCANotSupported if agent cannot display the requested information.
Leave:
... One of the other CAF error codes defined in caferr.h or one of the system-wide error codes for any other errors.
Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C void ContentAccess::CManager::DisplayManagementInfoL ( TAgent & aAgent )

Allows a client to display management information for a particular agent.

This allows a user to see all the specific information associated with a particular agent. In the case of an agent implementing DRM this could include the ability to list, view or delete DRM rights objects.

Parameters:
aAgent The agent.
Leave:
KErrCANotSupported If the specified agent does not support the display of management information.
Capability:
DRM Agents implementing DRM may not display their management dialog to processes without DRM capability

IMPORT_C TInt ContentAccess::CManager::GetAttribute | ( | TInt | aAttribute,
 |  | TInt & | aValue,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | const

Get an attribute from a content object.

See also:
ContentAccess::TAttribute
e.g.

                TInt value = 0;
                CManager* manager = CManager::NewL();

                err = manager->GetAttribute(EIsProtected, value, aVirtualPath);
                if(err == KErrNone && value)
                        {
                        DisplayPadLock();
                        }

Parameters:
aAttribute | The attribute to retrieve, from ContentAccess::TAttribute.
aValue | Used to return the value of the attribute.
aVirtualPath | The content object whose attributes are to be queried.
Returns:
Whether the attribute value was updated.

KErrNone if the attribute value was updated.

KErrNotFound if the URI or the object with the given UniqueId inside the file was not found.

KErrCANotSupported if the requested attribute is not supported for this content object.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CManager::GetAttributeSet | ( | RAttributeSet & | aAttributeSet,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | const

Get a set of attributes from a content object.

See also:
ContentAccess::TAttribute
The following example determines whether the content object is protected and has rights that will enable it to be viewed by the user

                TInt err = KErrNone;
                TInt value = 0;

                // The manager
                CManager* manager = CManager::NewLC();

                // Prepare the RAttributeSet object with the attributes to query
                RAttributeSet attributeSet;
                CleanupClosePushL(attributeSet);
                attributeSet.AddL(EProtected);
                attributeSet.AddL(ECanView);

                // Retrieve the attributes from the agent
                User::LeaveIfError(manager->GetAttributeSet(attributeSet, aVirtualPath));

                // Check if the content object is protected
                err =attributeSet.GetValue(EProtected, value);
                if(err == KErrNone && value)
                        {
                        // content object is DRM protected
                        }

                // Check if the content object can be display on screen
                err = attributeSet.GetValue(ECanView, value);
                if(err == KErrNone && value)
                        {
                        // content object is DRM protected
                        }

                // Can reuse the RAttributeSet if necessary
                User::LeaveIfError(manager->GetAttributeSet(attributeSet, aVirtualPath));

                ...
                // Finished
                CleanupStack::PopAndDestroy(2);         // manager, attributeSet.Close()

Parameters:
aAttributeSet | The set of attributes to query and update.
aVirtualPath | The content object to retrieve attributes from.
Returns:
Whether the attribute set was updated.

KErrNone if the attribute set was updated successfully.

KErrNotFound if the content object was not found.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C TInt ContentAccess::CManager::GetDir | ( | const TDesC & | aName,
 |  | const TUidType & | aEntryUid,
 |  | TUint | aEntrySortKey,
 |  | CDir *& | aFileList
 | ) | const

Gets a filtered list of a directory's contents by UID.

The aUidType parameter determines which file entry types should be listed. The sort key determines the order in which they are listed.

Notes:

  1. The function sets aFileList to NULL, and then allocates memory for it before appending entries to the list. Therefore, aFileList should have no memory allocated to it before this function is called, otherwise this memory will become orphaned.
  2. The caller of this function is responsible for deleting aFileList after the function has returned.

Access to agent private directories is permitted at the agents discretion.

See also:
TEntryKey
Parameters:
aName | The name of the directory for which a listing is required. Wildcards may be used to specify particular files.
aEntryUid | Only those files whose UIDs match those specified within this UID type will be included in the file list. Any, or all, of the three UIDs within the UID type may be omitted. Any UID which is omitted acts in a similar manner to a wildcard character, matching to all UIDs.
aEntrySortKey | The sort key. This is a set of flags indicating the order in which the entries are to be sorted. These flags are defined by TEntryKey.
aFileList | On return contains a filtered list of directory and file entries.
Returns:
The outcome of the GetDir operation.

KErrNone The directory contents were listed successfully.

KErrCANotSupported The agent does not allow clients to view its private directory.

KErrPermissionDenied If the process does not have the correct capabilities to view the directory.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory.

IMPORT_C TInt ContentAccess::CManager::GetDir | ( | const TDesC & | aName,
 |  | TUint | aEntryAttMask,
 |  | TUint | aEntrySortKey,
 |  | CDir *& | aEntryList,
 |  | CDir *& | aDirList
 | ) | const

Gets a filtered list of the directory and file entries contained in a directory and a list of the directory entries only.

The bitmask determines which file and directory entry types should be listed in aFileList. The contents of the second list, aDirList are not affected by the bitmask; it returns all directory entries contained in directory aName. The sort key determines the order in which both lists are sorted.

Notes:

  1. If sorting by UID (as indicated when the ESortByUid bit is OR'ed with the sort key), then UID information will be included in the listing whether or not KEntryAttAllowUid is specified in aEntryAttMask.
  2. The function sets both aFileList and aDirList to NULL, and then allocates memory to them before appending entries to the lists. Therefore, aFileList and aDirList should have no memory allocated to them before this function is called, otherwise the allocated memory will become orphaned.
  3. The caller of this function is responsible for deleting aFileList and aDirList after the function has returned.

Access to agent private directories is permitted at the agents discretion.

See also:
TEntryKey
Parameters:
aName | The name of the directory for which a listing is required. Wildcards may be used to specify particular files.
aEntryAttMask | Bitmask indicating the attributes of interest. Only files and directories whose attributes match those specified here can be included in aFileList. aDirList is unaffected by this mask. For more information, see KEntryAttMatchMask and the other directory entry details. Also see KEntryAttNormal and the other file or directory attributes.
aEntrySortKey | The sort key. This is a set of flags indicating the order in which the entries in both lists are to be sorted. These flags are defined by TEntryKey.
aEntryList | On return contains a filtered list of directory and file entries.
aDirList | On return contains a filtered list of directory entries only.
Returns:
The outcome of the GetDir operation.

KErrNone The directory contents were listed successfully.

KErrCANotSupported The agent does not allow clients to view its private directory.

KErrPermissionDenied If the process does not have the correct capabilities to view the directory.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory.

IMPORT_C TInt ContentAccess::CManager::GetDir | ( | const TDesC & | aName,
 |  | TUint | aEntryAttMask,
 |  | TUint | aEntrySortKey,
 |  | CDir *& | aEntryList
 | ) | const

Gets a filtered list of a directory's contents.

The bitmask determines which file and directory entry types should be listed. The sort key determines the order in which they are listed.

Notes:

  1. If sorting by UID (as indicated when the ESortByUid bit is OR'ed with the sort key), then UID information will be included in the listing whether or not KEntryAttAllowUid is specified in aEntryAttMask.
  2. The function sets aFileList to NULL, and then allocates memory for it before appending entries to the list. Therefore, aFileList should have no memory allocated to it before this function is called, otherwise this memory will become orphaned.
  3. The caller of this function is responsible for deleting aFileList after the function has returned.

Access to agent private directories is permitted at the agents discretion.

See also:
TEntryKey
Parameters:
aName | The name of the directory for which a listing is required. Wildcards may be used to specify particular files.
aEntryAttMask | Bitmask indicating the attributes of interest. Only files and directories whose attributes match those specified here can be included in the listing. For more information, see KEntryAttMatchMask and the other directory entry details. Also see KEntryAttNormal and the other file or directory attributes
aEntrySortKey | The sort key. This is a set of flags indicating the order in which the entries are to be sorted. These flags are defined by TEntryKey.
aEntryList | On return contains a filtered list of directory and file entries.
Returns:
The outcome of the GetDir operation.

KErrNone if the directory contents were listed successfully.

KErrCANotSupported if the agent does not allow clients to view its private directory.

KErrPermissionDenied if the process does not have the correct capabilities to view the directory.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

IMPORT_C TInt ContentAccess::CManager::GetStringAttribute | ( | TInt | aAttribute,
 |  | TDes & | aValue,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | const

Get text string attributes or meta-data from the file.

See also:
ContentAccess::TStringAttribute
e.g.
                CManager* manager = CManager::NewLC();

                TBuf <MAX_PATH> previewUri;
                if(manager->GetStringAttribute(EPreviewURI, previewUri, uri) == KErrNone)
                        {
                        DisplayPreview(previewUri);
                        }

                CleanupStack::PopAndDestroy();  // manager

Parameters:
aAttribute | The attribute to retrieve, from ContentAccess::TStringAttribute.
aValue | Used to return the value of the attribute.
aVirtualPath | The content object whose attributes are to be retrieved.
Returns:
Whether the value was updated.

KErrNone if the attribute was retrieved successfully.

KErrNotFound if the content object does not exist.

KErrCANotSupported if the requested attribute does not apply to this content object.

KErrOverflow if the buffer was not large enough to return the result.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

IMPORT_C TInt ContentAccess::CManager::GetStringAttributeSet | ( | RStringAttributeSet & | aStringAttributeSet,
 |  | const TVirtualPathPtr & | aVirtualPath
 | ) | const

Used to obtain a set of string attributes.

See also:
ContentAccess::TStringAttribute
                TInt err = KErrNone;
                TInt value = 0;

                CManager* manager = CManager::NewLC();

                // Prepare the RStringAttributeSet object with the attributes to query
                RStringAttributeSet stringAttributeSet;
                CleanupClosePushL(stringAttributeSet);
                stringAttributeSet.AddL(EPreviewURI);

                // Retrieve the attributes from the agent
                User::LeaveIfError(manager->GetAttributeSet(stringAttributeSet, aVirtualPath));

                // display preview
                TBuf <MAX_PATH> previewUri;
                if(stringAttributeSet.GetValue(ECanView, previewUri))
                        {
                        DisplayPreview(previewUri);
                        }

                // Finished
                CleanupStack::PopAndDestroy(2);         // manager, stringAttributeSet.Close()

Parameters:
aStringAttributeSet | The set of attributes to query and update.
aVirtualPath | The content object whose attributes are to be retrieved.
Returns:
Whether the string attribute set was updated.

KErrNone if the attribute set was updated successfully.

KErrNotFound if the object with the given virtual path was not found.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

IMPORT_C void ContentAccess::CManager::ListAgentsL ( RArray< TAgent > & aAgents )

List all the agents installed on the device (except F32Agent).

The caller must call RPointerArray::ResetAndDestroy() on the array when it has finished.

Parameters:
aAgents On completion this will contain a list of all the agents.

IMPORT_C TInt ContentAccess::CManager::MkDir ( const TDesC & aPath ) const

Create a directory.

This function can be used to create a directory within in the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aPath The full pathname of the directory to create.
Returns:
The outcome of the MkDir operation.

KErrNone if the directory was created successfully.

KErrAccessDenied if the agent does not allow the directory to be created.

KErrCANotSupported if the agent does not support directory creation.

KErrPermissionDenied if the client does not have the necessary capabilities to create directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory.

IMPORT_C TInt ContentAccess::CManager::MkDirAll ( const TDesC & aPath ) const

Create all directories in the given path if they do not exist.

This function can be used to create directories within in the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aPath The full pathname of the directory to create.
Returns:
The outcome of the MkDirAll operation.

KErrNone if the directory was created successfully.

KErrAccessDenied if the agent does not allow the directory to be created.

KErrPermissionDenied if the client does not have the necessary capabilities to create directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory.

static IMPORT_C CManager* ContentAccess::CManager::NewL ( ) [static]

Creates a CManager.

Returns:
A CManager object

static IMPORT_C CManager* ContentAccess::CManager::NewLC ( ) [static]

Creates a CManager.

Returns:
A CManager object

IMPORT_C void ContentAccess::CManager::NotifyStatusChange | ( | const TDesC & | aURI,
 |  | TEventMask | aMask,
 |  | TRequestStatus & | aStatus
 | ) |

Notify the caller when the status of a DRM protected content object changes.

See also:
ContentAccess::TEventMask
Parameters:
aURI | The location of the file.
aMask | Bitmask of events the caller is interested in.
aStatus | The TRequestStatus object to complete if the event occurs, or KErrCANotSupported if the agent does not support asynchronous notifications.
Capability:
DRM Deleting DRM protected content is not permitted for processes without DRM capability.

IMPORT_C TInt ContentAccess::CManager::RenameDir | ( | const TDesC & | aOldName,
 |  | const TDesC & | aNewName
 | ) | const

Rename a directory.

This function can be used to rename a directory from within the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aOldName | The existing pathname of the directory to rename.
aNewName | The new pathname of the directory.
Returns:
The outcome of the RenameDir operation.

KErrNone if the directory was removed successfully.

KErrAccessDenied f the agent does not allow the directory to be removed.

KErrCANotSupported if the agent does not support directory removal.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Otherwise one of the other system-wide error codes for any other errors.

IMPORT_C TInt ContentAccess::CManager::RenameFile | ( | const TDesC & | aSource,
 |  | const TDesC & | aDestination
 | ) | const

Rename or move the content file (eg to removable media).

Access to the agent private directories is permitted at the agents discretion.

Parameters:
aSource | The full pathname of the source file.
aDestination | The full pathname of the destination file.
Returns:
The outcome of the Rename operation.

KErrNone if the file was moved or renamed successfully.

KErrAccessDenied if the agent does not allow the file to be moved or renamed.

KErrCANotSupported if the agent does not support file renaming.

KErrPermissionDenied if the client does not have the necessary capabilities to move or rename the file.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Moving DRM protected files is not permitted for processes without DRM capability. Moving unprotected files is permitted

IMPORT_C TInt ContentAccess::CManager::RmDir ( const TDesC & aPath ) const

Remove a directory.

This function can be used to remove a directory from within the agent's private directory. Access to the agents private directory is permitted at the agents discretion.

Parameters:
aPath The full pathname of the directory to remove.
Returns:
The outcome of the RmDir operation.

KErrNone if the directory was removed successfully.

KErrAccessDenied if the agent does not allow the directory to be removed.

KErrCANotSupported if the agent does not support directory removal.

KErrPermissionDenied if the client does not have the necessary capabilities to remove directories.

Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.

Capability:
DRM Required when attempting to access an agents private directory

IMPORT_C TInt ContentAccess::CManager::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) |

Request all agents to set a property value.

If the property is set it is only set for this CManager session and does not impact other CAF users.

See also:
ContentAccess::TAgentProperty
Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
The outcome of the set property command.

KErrNone if the property was set by all agents.

KErrCANotSupported if one of the agent does not support the property or value.

KErrAccessDenied if one of the agents does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted

The documentation for this class was generated from the following file:
  • manager.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CMetaData Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CMetaData

ContentAccess::CMetaData Class Reference

Stores a field and data pair for use in a supplier import operation. More...

#include <metadata.h>

List of all members.

Public Member Functions

virtual | ~CMetaData ()
destructor
IMPORT_C const TDesC & | Field () const
The field name.
IMPORT_C const TDesC & | Data () const
The data value.
IMPORT_C const TDesC8 & | Field8 () const
The field name.
IMPORT_C const TDesC8 & | Data8 () const
The data value.
void | ExternalizeL (RWriteStream &aStream) const
Write the CMetaData to a data stream.

Static Public Member Functions

static CMetaData * | NewL (const TDesC8 &aField, const TDesC8 &aData)
Construct a new CMetaData with 8 bit data The 8-bit data will be stored in CMetaData as unicode.
static CMetaData * | NewL (const TDesC16 &aField, const TDesC16 &aData)
Construct a new CMetaData with unicode data.
static CMetaData * | NewL (RReadStream &aStream)
Construct a new CMetaData from a data stream.

Detailed Description

Stores a field and data pair for use in a supplier import operation.

The field and data can be any values the application doing the import thinks the agent will find useful. Some information that could be included here are headers, eg:

"Content Type", "application/vnd.oma.drm.dm"

The application can include anything it likes, if the agent doesn't understand the header it can just ignore it, eg:

"Colour", "Yellow"

CMetaData can be used with 8-bit or unicode data and automatically performs conversions between the two.

Applications should use the unicode functions whenever possible because it removes the risk of losing information during the unicode to 8 bit conversion.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CMetaData::~CMetaData ( ) [virtual]

destructor

Member Function Documentation

IMPORT_C const TDesC& ContentAccess::CMetaData::Data ( ) const

The data value.

Returns:
The data value

IMPORT_C const TDesC8& ContentAccess::CMetaData::Data8 ( ) const

The data value.

Returns:
The data value

void ContentAccess::CMetaData::ExternalizeL ( RWriteStream & aStream ) const

Write the CMetaData to a data stream.

Parameters:
aStream The stream to write the CMetaData object to
Interface: internalComponent
Interface: released

IMPORT_C const TDesC& ContentAccess::CMetaData::Field ( ) const

The field name.

Returns:
The field name

IMPORT_C const TDesC8& ContentAccess::CMetaData::Field8 ( ) const

The field name.

Returns:
The field name

static CMetaData* ContentAccess::CMetaData::NewL ( RReadStream & aStream ) [static]

Construct a new CMetaData from a data stream.

Parameters:
aStream The stream to read the CMetaData object from
Returns:
A CMetaData object read from the stream
Interface: internalComponent
Interface: released

static CMetaData* ContentAccess::CMetaData::NewL | ( | const TDesC16 & | aField,
 |  | const TDesC16 & | aData
 | ) | [static]

Construct a new CMetaData with unicode data.

Parameters:
aField | The name of the field
aData | The data associated with the field
Returns:
A CMetaData object populated with the given field and data
Interface: internalComponent
Interface: released

static CMetaData* ContentAccess::CMetaData::NewL | ( | const TDesC8 & | aField,
 |  | const TDesC8 & | aData
 | ) | [static]

Construct a new CMetaData with 8 bit data The 8-bit data will be stored in CMetaData as unicode.

Parameters:
aField | The name of the field
aData | The data associated with the field
Returns:
A CMetaData object populated with the given field and data
Interface: internalComponent
Interface: released

The documentation for this class was generated from the following file:
  • metadata.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CMetaDataArray Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CMetaDataArray

ContentAccess::CMetaDataArray Class Reference

Stores an array of CMetaData objects for use in a supplier import operation. More...

#include <metadataarray.h>

List of all members.

Public Member Functions

virtual | ~CMetaDataArray ()
Destructor.
IMPORT_C void | AddL (const TDesC8 &aField, const TDesC8 &aData)
Adds a new meta data,.
IMPORT_C void | AddL (const TDesC &aField, const TDesC &aData)
Adds a new meta data,.
IMPORT_C const CMetaData & | operator[] (TInt aIndex) const
Retrieves the MetaData at the given index.
IMPORT_C TInt | Count () const
The number of metadata objects in the list.
IMPORT_C const TDesC & | SearchL (const TDesC &aField, TBool aMatchCase=EFalse) const
Find the unicode data for a given unicode field.
IMPORT_C const TDesC8 & | SearchL (const TDesC8 &aField8, TBool aMatchCase=EFalse) const
Find the 8 bit data for a given 8 bit field.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Externalizes the CMetaDataArray object to a stream.

Static Public Member Functions

static IMPORT_C CMetaDataArray * | NewL ()
static IMPORT_C CMetaDataArray * | NewLC ()
static IMPORT_C CMetaDataArray * | NewL (RReadStream &aStream)
Construct a CMetaDataArray from a stream.

Detailed Description

Stores an array of CMetaData objects for use in a supplier import operation.

It provides search and routines (for both 8 bit and Unicode) to find the value corresponding to a particular field in the array.

Applications should use the unicode search function whenever possible because it removes the risk of losing information during the unicode to 8 bit conversion.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CMetaDataArray::~CMetaDataArray ( ) [virtual]

Destructor.

Member Function Documentation

IMPORT_C void ContentAccess::CMetaDataArray::AddL | ( | const TDesC & | aField,
 |  | const TDesC & | aData
 | ) |

Adds a new meta data,.

Parameters:
aField | The name used to index the value of interest
aData | The data

IMPORT_C void ContentAccess::CMetaDataArray::AddL | ( | const TDesC8 & | aField,
 |  | const TDesC8 & | aData
 | ) |

Adds a new meta data,.

Parameters:
aField | The name used to index the value of interest
aData | The data

IMPORT_C TInt ContentAccess::CMetaDataArray::Count ( ) const

The number of metadata objects in the list.

IMPORT_C void ContentAccess::CMetaDataArray::ExternalizeL ( RWriteStream & aStream ) const

Externalizes the CMetaDataArray object to a stream.

Parameters:
aStream The stream to write the header information to.

static IMPORT_C CMetaDataArray* ContentAccess::CMetaDataArray::NewL ( RReadStream & aStream ) [static]

Construct a CMetaDataArray from a stream.

Parameters:
aStream the stream containing the metadata array
Returns:
a new CMetaDataArray

static IMPORT_C CMetaDataArray* ContentAccess::CMetaDataArray::NewL ( ) [static]

static IMPORT_C CMetaDataArray* ContentAccess::CMetaDataArray::NewLC ( ) [static]

IMPORT_C const CMetaData& ContentAccess::CMetaDataArray::operator[] ( TInt aIndex ) const

Retrieves the MetaData at the given index.

Parameters:
aIndex The index of the meta-data
Returns:

IMPORT_C const TDesC8& ContentAccess::CMetaDataArray::SearchL | ( | const TDesC8 & | aField8,
 |  | TBool | aMatchCase = EFalse
 | ) | const

Find the 8 bit data for a given 8 bit field.

Parameters:
aField8 | The field to retrieve
aMatchCase | ETrue To perform case sensitive search, EFalse - To perform non case sensitive search
Returns:
The corresponding data or else a zero length string if the field was not found

IMPORT_C const TDesC& ContentAccess::CMetaDataArray::SearchL | ( | const TDesC & | aField,
 |  | TBool | aMatchCase = EFalse
 | ) | const

Find the unicode data for a given unicode field.

Parameters:
aField | The field to retrieve
aMatchCase | ETrue To perform case sensitive search, EFalse - To perform non case sensitive search
Returns:
The corresponding data or else a zero length string if the field was not found

The documentation for this class was generated from the following file:
  • metadataarray.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CRightsInfo Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CRightsInfo

ContentAccess::CRightsInfo Class Reference

Rights class to store a summary description of the rights and a unique reference to the rights object within an Agent. More...

#include <rightsinfo.h>

List of all members.

Public Member Functions

virtual | ~CRightsInfo ()
IMPORT_C const TDesC & | Description () const
returns a string describing the rights object
IMPORT_C const TDesC & | UniqueId () const
returns a string with a unique Id used to identify a particular rights object
IMPORT_C TInt | RightsType () const
Returns a bit mask of TRightsTypeMask flags.
IMPORT_C TRightsStatus | RightsStatus () const
The state of the rights.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Write this CRightsInfo object to a stream.

Static Public Member Functions

static IMPORT_C CRightsInfo * | NewL (const TDesC &aDescription, const TDesC &aUniqueId, TInt aRightsTypeMask, TRightsStatus aRightsStatus)
Construct a new CRightsInfo.
static IMPORT_C CRightsInfo * | NewL (RReadStream &aStream)
Construct a new CRightsInfo from a stream.

Detailed Description

Rights class to store a summary description of the rights and a unique reference to the rights object within an Agent.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CRightsInfo::~CRightsInfo ( ) [virtual]

Member Function Documentation

IMPORT_C const TDesC& ContentAccess::CRightsInfo::Description ( ) const

returns a string describing the rights object

Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C void ContentAccess::CRightsInfo::ExternalizeL ( RWriteStream & aStream ) const

Write this CRightsInfo object to a stream.

Parameters:
aStream The stream

static IMPORT_C CRightsInfo* ContentAccess::CRightsInfo::NewL ( RReadStream & aStream ) [static]

Construct a new CRightsInfo from a stream.

static IMPORT_C CRightsInfo* ContentAccess::CRightsInfo::NewL | ( | const TDesC & | aDescription,
 |  | const TDesC & | aUniqueId,
 |  | TInt | aRightsTypeMask,
 |  | TRightsStatus | aRightsStatus
 | ) | [static]

Construct a new CRightsInfo.

Parameters:
aDescription | A generic text description of the rights supplied by the agent "Content XYZ Expiry date mm/dd/yy" etc
aUniqueId | A uniqueId used to refer to this particular rights object within the agent it came from
aRightsTypeMask | A bitmask of TRightsType entries applicable to this rights object
aRightsStatus | The current status of this rights object
Returns:
A CRightsInfo object

IMPORT_C TRightsStatus ContentAccess::CRightsInfo::RightsStatus ( ) const

The state of the rights.

See also:
ContentAccess::TRightsStatus
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C TInt ContentAccess::CRightsInfo::RightsType ( ) const

Returns a bit mask of TRightsTypeMask flags.

A rights object can be stateless and/or consumable

See also:
ContentAccess::TRightsTypeMask
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C const TDesC& ContentAccess::CRightsInfo::UniqueId ( ) const

returns a string with a unique Id used to identify a particular rights object

Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

The documentation for this class was generated from the following file:
  • rightsinfo.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CRightsManager Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CRightsManager

ContentAccess::CRightsManager Class Reference

Manages and retrieves rights objects from an agent. More...

#include <rightsmanager.h>

Collaboration diagram for ContentAccess::CRightsManager:

[legend]
List of all members.

Public Member Functions

virtual | ~CRightsManager ()
IMPORT_C void | ListAllRightsL (RStreamablePtrArray< CRightsInfo > &aArray) const
List all rights held by the agent.
IMPORT_C void | ListRightsL (RStreamablePtrArray< CRightsInfo > &aArray, const TDesC &aUri) const
List all rights associated with a particular file.
IMPORT_C void | ListRightsL (RStreamablePtrArray< CRightsInfo > &aArray, TVirtualPathPtr &aVirtualPath) const
List all rights associated with a particular content object.
IMPORT_C void | ListContentL (RStreamablePtrArray< CVirtualPath > &aArray, CRightsInfo &aRightsInfo) const
List all content associated with a particular rights object.
IMPORT_C MAgentRightsBase * | GetRightsDataL (const CRightsInfo &aRightsInfo) const
This will be used by applications to retrieve an agent specific rights object.
IMPORT_C TInt | DeleteRightsObject (const CRightsInfo &aRightsInfo)
Asks the DRM agent to delete a rights object.
IMPORT_C TInt | DeleteAllRightsObjects (const TVirtualPathPtr &aVirtualPathPtr)
Deletes all rights associated with a particular content object.
IMPORT_C TInt | SetProperty (TAgentProperty aProperty, TInt aValue)
Request the agent to set a property value.

Friends

class | CManager

Detailed Description

Manages and retrieves rights objects from an agent.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CRightsManager::~CRightsManager ( ) [virtual]

Member Function Documentation

IMPORT_C TInt ContentAccess::CRightsManager::DeleteAllRightsObjects ( const TVirtualPathPtr & aVirtualPathPtr )

Deletes all rights associated with a particular content object.

The agent may display a dialog asking the user to confirm the delete. Execution will be blocked until the dialog is complete. Applications can request to disable the agents user interface using the SetProperty() command.

Parameters:
aVirtualPathPtr The content object.
Returns:
KErrNone if the rights were deleted.

KErrNotFound if no rights objects exist for the specified content object.

KErrCancel if the user cancels an agent supplied confirmation dialog.

KErrPermissionDenied if the agent does not permit the client to access rights information.

Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C TInt ContentAccess::CRightsManager::DeleteRightsObject ( const CRightsInfo & aRightsInfo )

Asks the DRM agent to delete a rights object.

The agent may display a dialog asking the user to confirm the delete. Execution will be blocked until the dialog is complete. Applications can request to disable the agents user interface using the SetProperty() command.

Parameters:
aRightsInfo The rights object.
Returns:
The outcome of the delete operation.

KErrNone if the rights were deleted.

KErrCancel if the user cancels an agent supplied confirmation dialog.

KErrNotFound if the rights object does not exist.

KErrPermissionDenied if the agent does not permit the client to access rights information.

Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C MAgentRightsBase* ContentAccess::CRightsManager::GetRightsDataL ( const CRightsInfo & aRightsInfo ) const

This will be used by applications to retrieve an agent specific rights object.

Parameters:
aRightsInfo The rights object.
Returns:
An agent specific rights object.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C void ContentAccess::CRightsManager::ListAllRightsL ( RStreamablePtrArray< CRightsInfo > & aArray ) const

List all rights held by the agent.

Parameters:
aArray The client supplied array used to store the CRightsInfo objects. The agent will add CRightsInfo objects to the supplied array.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C void ContentAccess::CRightsManager::ListContentL | ( | RStreamablePtrArray< CVirtualPath > & | aArray,
 |  | CRightsInfo & | aRightsInfo
 | ) | const

List all content associated with a particular rights object.

Parameters:
aArray | The client supplied array used to store the list of content objects. The agent will add CVirtualPath objects to the supplied array.
aRightsInfo | The rights object.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C void ContentAccess::CRightsManager::ListRightsL | ( | RStreamablePtrArray< CRightsInfo > & | aArray,
 |  | TVirtualPathPtr & | aVirtualPath
 | ) | const

List all rights associated with a particular content object.

Parameters:
aArray | The client supplied array used to store the CRightsInfo objects. The agent will add CRightsInfo objects to the supplied array.
aVirtualPath | The content object.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C void ContentAccess::CRightsManager::ListRightsL | ( | RStreamablePtrArray< CRightsInfo > & | aArray,
 |  | const TDesC & | aUri
 | ) | const

List all rights associated with a particular file.

Parameters:
aArray | The client supplied array used to store the CRightsInfo objects. The agent will add CRightsInfo objects to the supplied array.
aUri | The name of the file.
Leave:
KErrPermissionDenied If the agent does not permit the client to access rights information.
Leave:
... One of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Capability:
DRM Access to DRM rights is not permitted for processes without DRM capability.

IMPORT_C TInt ContentAccess::CRightsManager::SetProperty | ( | TAgentProperty | aProperty,
 |  | TInt | aValue
 | ) |

Request the agent to set a property value.

If the property is set it is only set for this CRightsManager session and does not impact other CAF users.

See also:
ContentAccess::TAgentProperty
Parameters:
aProperty | The property to set.
aValue | The value of the property.
Returns:
KErrNone if the property was set.

KErrCANotSupported if the agent does not support the property or value.

KErrAccessDenied if the agent does not permit the property to be changed.

KErrPermissionDenied if the application does not have the necessary capability to change the property.

Capability:
DRM Access to DRM protected content is not permitted for processes without DRM capability. Access to unprotected content is unrestricted.

Friends And Related Function Documentation

friend class CManager [friend]

The documentation for this class was generated from the following file:
  • rightsmanager.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CSupplier Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CSupplier

ContentAccess::CSupplier Class Reference

Used to import files using a content access agent. More...

#include <supplier.h>

List of all members.

Public Member Functions

virtual | ~CSupplier ()
destructor
IMPORT_C void | SetOutputDirectoryL (const TDesC &aOutputDirectory)
Sets the output directory for any files generated by the CAF.
IMPORT_C TBool | IsImportSupported (const TDesC8 &aMimeType)
Determines whether one of the CAF agents wants to import a file with the given mimetype.
IMPORT_C void | PrepareHTTPRequestHeaders (RStringPool &aStringPool, RHTTPHeaders &aRequestHeaders) const
Get HTTP download headers from the agents.
IMPORT_C CImportFile * | ImportFileL (const TDesC8 &aMimeType, const CMetaDataArray &aImportMetaData, const TDesC &aSuggestedFileName)
Creates a new CImportFile object and allow the agent to generate the output files.
IMPORT_C CImportFile * | ImportFileL (const TDesC8 &aMimeType, const CMetaDataArray &aImportMetaData)
Creates a new CImportFile object where the caller must provide file handles to store output files.

Static Public Member Functions

static IMPORT_C CSupplier * | NewL ()
Create a new CSupplier.
static IMPORT_C CSupplier * | NewLC ()
Create a new CSupplier.

Detailed Description

Used to import files using a content access agent.

In the case of some DRM agents the import will be a transformation from an unprotected content type to a protected content type.

It creates CImportFile objects to import files into a Content Access Agent. CSupplier uses it's CAgentResolver to determine which agent should receive the file based upon the mime type of the file.

Clients can check if a mime type is supported by by calling the CSupplier::IsImportSupported() function.

The CSupplier does not dynamically update it's list of agents so applications should not use a long term persistent instance of CSupplier.

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CSupplier::~CSupplier ( ) [virtual]

destructor

Member Function Documentation

IMPORT_C CImportFile* ContentAccess::CSupplier::ImportFileL | ( | const TDesC8 & | aMimeType,
 |  | const CMetaDataArray & | aImportMetaData
 | ) |

Creates a new CImportFile object where the caller must provide file handles to store output files.

This allows a server to store the output files within its own private directory. The CAF agent will write to the private directory using the file handle provided by the server.

If the agent requires a new output file it will return KErrCANewFileHandleRequired from CImportFile::Write() or CImportFile::WriteComplete() The application performing the supply should provide the agent with a new file handle using CImportFile::ContinueWithNewOutputFile();

Parameters:
aMimeType | This should be one of the mime types supported a CAF agent, IsImportSupported() can be used to check this.
aImportMetaData | Any additional information that may be useful for the agent performing the import. Ideally this will include the mime headers for the file about to be passed into CAF.
Returns:
A CImportFile object to import the file.
Leave:
KErrCANoAgent No agent supports the mime type supplied in aMimeType

IMPORT_C CImportFile* ContentAccess::CSupplier::ImportFileL | ( | const TDesC8 & | aMimeType,
 |  | const CMetaDataArray & | aImportMetaData,
 |  | const TDesC & | aSuggestedFileName
 | ) |

Creates a new CImportFile object and allow the agent to generate the output files.

Parameters:
aMimeType | This should be one of the mime types supported by CAF, IsImportSupported() can be used to check this.
aImportMetaData | Any additional information that may be useful for the agent performing the import. Ideally this will include the mime headers for the file about to be passed into CAF.
aSuggestedFileName | Suggested filename for the CAF agent to use when creating the output files, Details of the output files produced can be obtained using CImportFile::OutputFileL().
Returns:
A CImportFile object to import the file.
Leave:
KErrCANoAgent No agent supports the mime type supplied in aMimeType

IMPORT_C TBool ContentAccess::CSupplier::IsImportSupported ( const TDesC8 & aMimeType )

Determines whether one of the CAF agents wants to import a file with the given mimetype.

If this function returns ETrue the application should use the CSupplier to create a ContentAccess::CImportFile session and import the file into CAF.

Parameters:
aMimeType The mime type of the file determined by an Apparc recognition or transmission header information.
Returns:
ETrue if the mimetype is recognized by one of the CAF agents, EFalse otherwise.

static IMPORT_C CSupplier* ContentAccess::CSupplier::NewL ( ) [static]

Create a new CSupplier.

Returns:
a CSupplier object

static IMPORT_C CSupplier* ContentAccess::CSupplier::NewLC ( ) [static]

Create a new CSupplier.

Returns:
a CSupplier object

IMPORT_C void ContentAccess::CSupplier::PrepareHTTPRequestHeaders | ( | RStringPool & | aStringPool,
 |  | RHTTPHeaders & | aRequestHeaders
 | ) | const

Get HTTP download headers from the agents.

Some DRM schemes require specific headers to be present in the HTTP request header. This function allows a client to retrieve these headers from the agents so any download request will satisfy the criteria required by the HTTP server.

Parameters:
aStringPool | The string pool used by the HTTP session
aRequestHeaders | The agents will add any required fields to the headers

IMPORT_C void ContentAccess::CSupplier::SetOutputDirectoryL ( const TDesC & aOutputDirectory )

Sets the output directory for any files generated by the CAF.

Parameters:
aOutputDirectory The preferred location to store any output files

The documentation for this class was generated from the following file:
  • supplier.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CSupplierOutputFile Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CSupplierOutputFile

ContentAccess::CSupplierOutputFile Class Reference

Holds the details of an output file produced by CAF. More...

#include <supplieroutputfile.h>

List of all members.

Public Member Functions

virtual | ~CSupplierOutputFile ()
IMPORT_C TPtrC | FileName () const
Finds out the name of the file.
IMPORT_C TOutputType | OutputType () const
The type of the file, e.g., Content or a Receipt.
IMPORT_C TPtrC8 | MimeTypeL ()
The mime type of the output file.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Write the CSupplierOutputFile object to a stream.

Static Public Member Functions

static IMPORT_C CSupplierOutputFile * | NewL (const TDesC &aFileName, const TOutputType aOutputType, const TDesC8 &aMimeType)
Create a new CSupplierOutputFile used to describe output files produced by the CAF supply operation.
static IMPORT_C CSupplierOutputFile * | NewL (RReadStream &aStream)
Construct an instance of CSupplierOutputFile by reading from the stream.

Detailed Description

Holds the details of an output file produced by CAF.

It stores:

  • The filename
  • The type of file (receipt or content)
  • The mime type of the file
Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CSupplierOutputFile::~CSupplierOutputFile ( ) [virtual]

Member Function Documentation

IMPORT_C void ContentAccess::CSupplierOutputFile::ExternalizeL ( RWriteStream & aStream ) const

Write the CSupplierOutputFile object to a stream.

Parameters:
aStream The stream to write to.

IMPORT_C TPtrC ContentAccess::CSupplierOutputFile::FileName ( ) const

Finds out the name of the file.

Returns:
The name (with full path) of the output file produced.

IMPORT_C TPtrC8 ContentAccess::CSupplierOutputFile::MimeTypeL ( )

The mime type of the output file.

Returns:
The mime type.

static IMPORT_C CSupplierOutputFile* ContentAccess::CSupplierOutputFile::NewL ( RReadStream & aStream ) [static]

Construct an instance of CSupplierOutputFile by reading from the stream.

Parameters:
aStream A stream containing a CSupplierOutputFile
Returns:
A new CSupplierOutputFile

static IMPORT_C CSupplierOutputFile* ContentAccess::CSupplierOutputFile::NewL | ( | const TDesC & | aFileName,
 |  | const TOutputType | aOutputType,
 |  | const TDesC8 & | aMimeType
 | ) | [static]

Create a new CSupplierOutputFile used to describe output files produced by the CAF supply operation.

Note:
Receipt files should be generated in localised unicode
Parameters:
aFileName | The name of the file produced
aOutputType | The type of output file produced
aMimeType | The mime type of the file produced
Returns:
a new CSupplierOutputFile object

IMPORT_C TOutputType ContentAccess::CSupplierOutputFile::OutputType ( ) const

The type of the file, e.g., Content or a Receipt.

Note:
Receipt files should be generated in localised unicode
Returns:
The type of output file.

The documentation for this class was generated from the following file:
  • supplieroutputfile.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::CVirtualPath Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::CVirtualPath

ContentAccess::CVirtualPath Class Reference

A virtual path describes the location of the file (URI) and the location of a content object within that file (Unique Id). More...

#include <virtualpath.h>

Collaboration diagram for ContentAccess::CVirtualPath:

[legend]
List of all members.

Public Member Functions

virtual | ~CVirtualPath ()
IMPORT_C const TDesC & | URI () const
The location of the file containing the content object.
IMPORT_C const TDesC & | UniqueId () const
UniqueId supplied by a CAF Agent to identify the object within the file.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Allows the class to write itself to a stream.
IMPORT_C const TDesC & | GetCombinedUriUniqueId ()
Convert the CVirtualPath to a single URI representing a particular content object.
operator const TVirtualPathPtr & () const
Cast operator allowing the CVirtualPath to be used as a TVirtualPathPtr.

Static Public Member Functions

static IMPORT_C CVirtualPath * | NewL (const TVirtualPathPtr &aPtr)
Create a CVirtualPath object from a TVirtualPathPtr.
static IMPORT_C CVirtualPath * | NewL (const TDesC &aCombinedUriUniqueId)
Create a virtual path object from a combined Uri and UniqueId.
static IMPORT_C CVirtualPath * | NewL (const TDesC &aURI, const TDesC &aUniqueId)
Create a virtual path object for a specific content object within a file.
static IMPORT_C CVirtualPath * | NewL (RReadStream &aStream)
Construct and read a CVirtualPath object from a stream.

Detailed Description

A virtual path describes the location of the file (URI) and the location of a content object within that file (Unique Id).

The URI must conform to the standard defined in RFC2396, found at http://www.ietf.org/.

CVirtualPath makes a copy of the URI and UniqueId used to identify a particular content object within a file.

The TVirtualPathPtr cast operator allows the CVirtualPath object to be used with CAF functions requiring a TVirtualPathPtr.

The GetCombinedUriUniqueId() function allows it to "flatten" a virtual path into a single URI. The combined virtual path will be the URI concatenated with the UniqueId seperated by the KCafVirtualPathSeparator character taking the format.

                <URI><KCafVirtualPathSeparator><UniqueID>

An example of this format is shown below:

        // Create a CVirtualPath object to point to OBJECT1 inside file.dcf
        CVirtualPath *path = CVirtualPath::NewL(_L("C:\\directory\file.dcf"), _L("OBJECT1"));

        // convert the URI and unique ID into a single URI.
        TVirtualPathPtr aPath = path->GetCombinedUriUniqueId();
Note:
If a URI is supplied which contains multiple KCafVirtualPathSeparator characters the rightmost KCafVirtualPathSeparator character will be taken as marking the end of the URI and the start of the UniqueId. When multiple KCafVirtualPathSeparator characters are present, under certain situations this will result in an invalid URI and UniqueId being created for the virtual path and can lead to an undefined failure.
Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

virtual ContentAccess::CVirtualPath::~CVirtualPath ( ) [virtual]

Member Function Documentation

IMPORT_C void ContentAccess::CVirtualPath::ExternalizeL ( RWriteStream & aStream ) const

Allows the class to write itself to a stream.

Parameters:
aStream The stream to write to

IMPORT_C const TDesC& ContentAccess::CVirtualPath::GetCombinedUriUniqueId ( )

Convert the CVirtualPath to a single URI representing a particular content object.

The URI and UniqueId will be separated by a KCafVirtualPathSeparator()

Returns:
A descriptor contaning the URI and UniqueId concatenated together

static IMPORT_C CVirtualPath* ContentAccess::CVirtualPath::NewL ( RReadStream & aStream ) [static]

Construct and read a CVirtualPath object from a stream.

Parameters:
aStream The stream to read frin

static IMPORT_C CVirtualPath* ContentAccess::CVirtualPath::NewL | ( | const TDesC & | aURI,
 |  | const TDesC & | aUniqueId
 | ) | [static]

Create a virtual path object for a specific content object within a file.

Parameters:
aURI | The location of the file
aUniqueId | The location of the content within the file
Returns:
a new CVirtualPath object

static IMPORT_C CVirtualPath* ContentAccess::CVirtualPath::NewL ( const TDesC & aCombinedUriUniqueId ) [static]

Create a virtual path object from a combined Uri and UniqueId.

This constructs a CVirtual path from a single descriptor.

Note that the descriptor here may be just a URI or it could be a URI concatenated with the file's UniqueId. If it is a concatenated URI and UniqueId the URI and UniqueId will be seperated by the KCasfVirtualPathSeparator character. For more information see above.

Parameters:
aCombinedUriUniqueId The location of the content object
Returns:
a new CVirtualPath object

static IMPORT_C CVirtualPath* ContentAccess::CVirtualPath::NewL ( const TVirtualPathPtr & aPtr ) [static]

Create a CVirtualPath object from a TVirtualPathPtr.

Parameters:
aPtr The location of the content object
Returns:
a new CVirtualPath object

ContentAccess::CVirtualPath::operator const TVirtualPathPtr & ( ) const [inline]

Cast operator allowing the CVirtualPath to be used as a TVirtualPathPtr.

Returns:
a TVirtualPathPtr with the same value as this object

IMPORT_C const TDesC& ContentAccess::CVirtualPath::UniqueId ( ) const

UniqueId supplied by a CAF Agent to identify the object within the file.

Returns:
The uniqueId of the object within the file

IMPORT_C const TDesC& ContentAccess::CVirtualPath::URI ( ) const

The location of the file containing the content object.

Returns:
The location of the file

The documentation for this class was generated from the following file:
  • virtualpath.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::MAgentRightsBase Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::MAgentRightsBase

ContentAccess::MAgentRightsBase Class Reference

Interface used by agents as a base class for their own rights objects. More...

#include <rightsinfo.h>

List of all members.

Public Member Functions

virtual void | ExternalizeL (RWriteStream &aStream) const =0
virtual void | InternalizeL (RReadStream &aStream)=0

Detailed Description

Interface used by agents as a base class for their own rights objects.

Agent derived classes will contain a complete object capable of describing rights for content managed by that agent.

All derived classes must implement the serialization functions InternalizeL() and ExternalizeL()

Interface: publishedPartner
Interface: released

Member Function Documentation

virtual void ContentAccess::MAgentRightsBase::ExternalizeL ( RWriteStream & aStream ) const [pure virtual]

virtual void ContentAccess::MAgentRightsBase::InternalizeL ( RReadStream & aStream ) [pure virtual]

The documentation for this class was generated from the following file:
  • rightsinfo.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::RAttributeSet Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::RAttributeSet

ContentAccess::RAttributeSet Class Reference

Holds the values of a predefined set of attributes based upon ContentAccess::TAttribute. More...

#include <attributeset.h>

List of all members.

Public Member Functions

IMPORT_C | RAttributeSet ()
IMPORT_C void | Close ()
Release all resources used by the RAttributeSet.
IMPORT_C void | AddL (TInt aAttribute)
Add a new attribute to the set The attribute is initalised with a default value of EAttributeNotSupported.
IMPORT_C TInt | GetValue (TInt aAttribute, TInt &aValue) const
Get the value of a specified attribute.
IMPORT_C TInt | SetValue (TInt aAttribute, TInt aValue, TInt aErrorCode)
Set the value of an attribute within the set.
IMPORT_C TInt | operator[] (TInt aIndex) const
Find the attribute stored at a particular index in the set.
IMPORT_C TInt | Count () const
The number of attributes in the set.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Write the RAttributeSet to a stream.
IMPORT_C void | InternalizeL (RReadStream &aStream)
Read the RAttributeSet from a stream This does not clear the contents of the attribute set before reading.

Classes

class | TAttributeValue
Holds the value of an attribute along with any error encountered while retrieving the attribute.

Detailed Description

Holds the values of a predefined set of attributes based upon ContentAccess::TAttribute.

It is also possible for an agent to provide an extended set of these attributes beyond EAgentSpecificAttributeBase but only applications written to support a that particular agent will support this.

No duplicate attributes are allowed in the set

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

IMPORT_C ContentAccess::RAttributeSet::RAttributeSet ( )

Member Function Documentation

IMPORT_C void ContentAccess::RAttributeSet::AddL ( TInt aAttribute )

Add a new attribute to the set The attribute is initalised with a default value of EAttributeNotSupported.

Parameters:
aAttribute The attribute to add to the set

IMPORT_C void ContentAccess::RAttributeSet::Close ( )

Release all resources used by the RAttributeSet.

This must be called before the RAttribute set goes out of scope

IMPORT_C TInt ContentAccess::RAttributeSet::Count ( ) const

The number of attributes in the set.

Returns:
The number of attributes in the set

IMPORT_C void ContentAccess::RAttributeSet::ExternalizeL ( RWriteStream & aStream ) const

Write the RAttributeSet to a stream.

Parameters:
aStream The stream to write the attribute set to

IMPORT_C TInt ContentAccess::RAttributeSet::GetValue | ( | TInt | aAttribute,
 |  | TInt & | aValue
 | ) | const

Get the value of a specified attribute.

Parameters:
aAttribute | The attribute to query
aValue | The value of the attribute
Returns:
Whether the value parameter was updated

KErrNone The attribute value was updated

KErrNotFound The attribute is not part of the set

IMPORT_C void ContentAccess::RAttributeSet::InternalizeL ( RReadStream & aStream )

Read the RAttributeSet from a stream This does not clear the contents of the attribute set before reading.

The values of any attributes already in the set are updated with new values from the stream. New attributes from the stream and their values are added to the set.

Parameters:
aStream The stream to read the attribute set from

IMPORT_C TInt ContentAccess::RAttributeSet::operator[] ( TInt aIndex ) const

Find the attribute stored at a particular index in the set.

Parameters:
aIndex The index of the attribute
Returns:
The attribute, NOT the value of the attribute

IMPORT_C TInt ContentAccess::RAttributeSet::SetValue | ( | TInt | aAttribute,
 |  | TInt | aValue,
 |  | TInt | aErrorCode
 | ) |

Set the value of an attribute within the set.

Parameters:
aAttribute | The attribute to set
aValue | The value of the attribute
aErrorCode | The error code to return when this attribute is requested via the GetValue() function
Returns:
Whether the new attribute value was set

KErrNone if the value was set

KErrNotFound if the attribute is not part of the set

The documentation for this class was generated from the following file:
  • attributeset.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::RStreamablePtrArray< T > Class Template Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::RStreamablePtrArray

ContentAccess::RStreamablePtrArray< T > Class Template Reference

Template class used to store an array of pointers that can also write itself to a stream. More...

#include <StreamablePtrArray.h>

List of all members.

Public Member Functions

RStreamablePtrArray ()
Constructor.
void | Close ()
Free all resources held by the array.
void | AppendL (T *aElement)
Append an element to the array.
TInt | Count () const
Count the number of objects in the array.
T * | operator[] (TInt aIndex) const
Return a pointer to an element at a given index in the array.
void | ResetAndDestroy ()
Delete all elements in the array.
void | InternalizeL (RReadStream &aStream)
Add array elements from a stream.
void | ExternalizeL (RWriteStream &aStream) const
Write the entire array to a stream.
void | RemoveL (TInt aIndex)
Remove an element from the array.

Detailed Description

template<class T>
class ContentAccess::RStreamablePtrArray< T >

Template class used to store an array of pointers that can also write itself to a stream.

The RStreamablePtrArray owns all the elements contained within it. The close function must be called before the RStreamablePtrArray goes out of scope.

The close function frees all resources and deletes all array elements

The array can be streamed using the InternalizeL() and ExternalizeL() functions

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

template<class T>
RStreamablePtrArray::RStreamablePtrArray ( ) [inline]

Constructor.

Member Function Documentation

template<class T>
void RStreamablePtrArray::AppendL ( T * aElement ) [inline]

Append an element to the array.

Ownership of the pointer is transferred to the array

Parameters:
aElement The item to add to the array

template<class T>
void RStreamablePtrArray::Close ( ) [inline]

Free all resources held by the array.

Calls ResetAndDestroy();

template<class T>
TInt RStreamablePtrArray::Count ( ) const [inline]

Count the number of objects in the array.

template<class T>
void RStreamablePtrArray::ExternalizeL ( RWriteStream & aStream ) const [inline]

Write the entire array to a stream.

template<class T>
void RStreamablePtrArray::InternalizeL ( RReadStream & aStream ) [inline]

Add array elements from a stream.

template<class T>
T * RStreamablePtrArray::operator[] ( TInt aIndex ) const [inline]

Return a pointer to an element at a given index in the array.

Parameters:
aIndex The zero based index in the array, must be less than Count()
Returns:
A pointer to the object stored in the array

template<class T>
void RStreamablePtrArray::RemoveL ( TInt aIndex ) [inline]

Remove an element from the array.

Note that the function does not delete the pointer.

template<class T>
void RStreamablePtrArray::ResetAndDestroy ( ) [inline]

Delete all elements in the array.

The documentation for this class was generated from the following files:
  • StreamablePtrArray.h
  • StreamablePtrArray.inl
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::RStringAttributeSet Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::RStringAttributeSet

ContentAccess::RStringAttributeSet Class Reference

Holds the values of a predefined set of attributes based upon ContentAccess::TStringAttribute. More...

#include <stringattributeset.h>

List of all members.

Public Member Functions

IMPORT_C | RStringAttributeSet ()
IMPORT_C void | Close ()
Release all resources used by the RStringAttributeSet.
IMPORT_C void | AddL (TInt aAttribute)
Add a new attribute to the set The attribute value is initalised with an empty string.
IMPORT_C TInt | GetValue (TInt aAttribute, TDes &aValue) const
Get the value of a specified attribute.
IMPORT_C TInt | GetValueLength (TInt aAttribute) const
Get the length of a buffer required to store the value of a specified attribute.
IMPORT_C TInt | SetValue (TInt aAttribute, const TDesC &aValue, TInt aErrorCode)
Set the value of an attribute within the set.
IMPORT_C TInt | operator[] (TInt aIndex) const
Find the attribute stored at a particular index in the set.
IMPORT_C TInt | Count () const
The number of attributes in the set.
IMPORT_C void | ExternalizeL (RWriteStream &aStream) const
Write the RAttributeSet to a stream.
IMPORT_C void | InternalizeL (RReadStream &aStream)
Read the RAttributeSet from a stream This does not clear the contents of the attribute set before reading.

Detailed Description

Holds the values of a predefined set of attributes based upon ContentAccess::TStringAttribute.

It is also possible for an agent to provide an extended set of these attributes beyond EAgentSpecificAttributeBase but only applications written to support a that particular agent will support this.

No duplicate attributes are allowed in the set

Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

IMPORT_C ContentAccess::RStringAttributeSet::RStringAttributeSet ( )

Member Function Documentation

IMPORT_C void ContentAccess::RStringAttributeSet::AddL ( TInt aAttribute )

Add a new attribute to the set The attribute value is initalised with an empty string.

Parameters:
aAttribute The attribute to add to the set

IMPORT_C void ContentAccess::RStringAttributeSet::Close ( )

Release all resources used by the RStringAttributeSet.

This must be called before the RStringAttribute set goes out of scope

IMPORT_C TInt ContentAccess::RStringAttributeSet::Count ( ) const

The number of attributes in the set.

Returns:
The number of attributes in the set

IMPORT_C void ContentAccess::RStringAttributeSet::ExternalizeL ( RWriteStream & aStream ) const

Write the RAttributeSet to a stream.

Parameters:
aStream The stream to write the attribute set to

IMPORT_C TInt ContentAccess::RStringAttributeSet::GetValue | ( | TInt | aAttribute,
 |  | TDes & | aValue
 | ) | const

Get the value of a specified attribute.

Parameters:
aAttribute | The attribute to query
aValue | The value of the attribute is copied to this descriptor
Returns:
The value of the attribute

KErrOverflow If the descriptor is not large enough to store the attribute

KErrNotFound if the attribute is not part of the set

IMPORT_C TInt ContentAccess::RStringAttributeSet::GetValueLength ( TInt aAttribute ) const

Get the length of a buffer required to store the value of a specified attribute.

Parameters:
aAttribute The attribute to query
Returns:
The length of the value of the attribute

IMPORT_C void ContentAccess::RStringAttributeSet::InternalizeL ( RReadStream & aStream )

Read the RAttributeSet from a stream This does not clear the contents of the attribute set before reading.

The values of any attributes already in the set are updated with new values from the stream. New attributes from the stream and their values are added to the set.

Parameters:
aStream The stream to read the attribute set from

IMPORT_C TInt ContentAccess::RStringAttributeSet::operator[] ( TInt aIndex ) const

Find the attribute stored at a particular index in the set.

Parameters:
aIndex The index of the attribute
Returns:
The attribute, NOT the value of the attribute

IMPORT_C TInt ContentAccess::RStringAttributeSet::SetValue | ( | TInt | aAttribute,
 |  | const TDesC & | aValue,
 |  | TInt | aErrorCode
 | ) |

Set the value of an attribute within the set.

Parameters:
aAttribute | The attribute to set
aValue | The value of the attribute
aErrorCode | The error to return when GetValue() is called for this attribute
Leave:
KErrNotFound if the attribute is not part of the set

The documentation for this class was generated from the following file:
  • stringattributeset.h
Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::TAgent Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::TAgent

ContentAccess::TAgent Class Reference

Represents the name of a single CAF agent. More...

#include <agent.h>

List of all members.

Public Member Functions

IMPORT_C const TDesC & | Name () const
The name of the agent.
TUid | ImplementationUid () const
The UID of the agent DLL.
void | SetValue (const TDesC &aName, TUid aUid)
Set the value of this TAgent.

Detailed Description

Represents the name of a single CAF agent.

This allows applications to reference a particular agent within the Content Access Framework.

Interface: publishedPartner
Interface: released

Member Function Documentation

TUid ContentAccess::TAgent::ImplementationUid ( ) const

The UID of the agent DLL.

Returns:
The UID of the agent ECOM implementation DLL
Interface: internalComponent
Interface: released

IMPORT_C const TDesC& ContentAccess::TAgent::Name ( ) const

The name of the agent.

Returns:
The name of the agent

void ContentAccess::TAgent::SetValue | ( | const TDesC & | aName,
 |  | TUid | aUid
 | ) |

Set the value of this TAgent.

Parameters:
aName | The name of the agent
aUid | The agent implementation Uid
Interface: internalComponent
Interface: released

The documentation for this class was generated from the following file:
  • agent.h
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::TF32AgentUiFactory Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::TF32AgentUiFactory

ContentAccess::TF32AgentUiFactory Class Reference

Factory function that creates the F32 Agent UI. More...

#include <f32agentui.h>

List of all members.

Static Public Member Functions

static IMPORT_C CF32AgentUi * CreateF32AgentUiL ()

Detailed Description

Factory function that creates the F32 Agent UI.

Returns:
a CF32AgentUi object

Member Function Documentation

static IMPORT_C CF32AgentUi* ContentAccess::TF32AgentUiFactory::CreateF32AgentUiL ( ) [static]

The documentation for this class was generated from the following file:
  • f32agentui.h
Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess::TVirtualPathPtr Class Reference

  • Class List
  • Class Hierarchy
  • Class Members
ContentAccess::TVirtualPathPtr

ContentAccess::TVirtualPathPtr Class Reference

Identifies the location of a file and a particular content object inside it. More...

#include <virtualpathptr.h>

List of all members.

Public Member Functions

IMPORT_C | TVirtualPathPtr (const TDesC &aUri, const TDesC &aUniqueId)
Constructor used when the URI and UniqueId fields are separate.
IMPORT_C | TVirtualPathPtr (const TDesC &aCombinedUriUniqueId)
Constructor used for a concatenated URI and UniqueId.
IMPORT_C | TVirtualPathPtr (const TVirtualPathPtr &aPtr)
Copy constructor.
IMPORT_C const TDesC & | URI () const
The location of the file containing the content object.
IMPORT_C const TDesC & | UniqueId () const
UniqueId supplied by a CAF Agent to identify the object within the file.
IMPORT_C TVirtualPathPtr & | operator= (const TVirtualPathPtr &aVirtualPath)
Assignment operator.
IMPORT_C TVirtualPathPtr & | operator= (const TDesC &aCombinedUriUniqueId)
Assignment operator converts a single descriptor to a TVirtualPathPtr.

Friends

class | CVirtualPath

Detailed Description

Identifies the location of a file and a particular content object inside it.

TVirtualPathPtr points to the two descriptors (the URI and UniqueId) used to initialise it. These descriptors must not be modified or destroyed while the TVirtualPathPtr object is in use.

The URI must be in the format specified in RFC2396, found at http://www.ietf.org/.

The UniqueId will be created by the Agent. Content is only ever accessed by one agent so it is the agents responsibility to ensure the UniqueId is truly unique within the file.

It is also possible to flatten a virtual path into a single descriptor. The ContentAccess::CVirtualPath class concatenates the URI, a separator, the KCafVirtualPathSeparator character, and the UniqueId to form a single URI. TVirtualPathPtr can be used to decode this virtual path into the URI and the content object UniqueId. The concatenated URI and UniqueId take the format:

                <URI><KCafVirtualPathSeparator><UniqueID>

An example of this format is shown below:

        // Create a CVirtualPath object to point to OBJECT1 inside file.dcf
        CVirtualPath *path = CVirtualPath::NewL(_L("C:\\directory\file.dcf"), _L("OBJECT1"));

        // convert the URI and unique ID into a single URI.
        TVirtualPathPtr aPath = path->GetCombinedUriUniqueId();
Note:
If a URI is supplied which contains multiple KCafVirtualPathSeparator characters the rightmost KCafVirtualPathSeparator character will be taken as marking the end of the URI and the start of the UniqueId. When multiple KCafVirtualPathSeparator characters are present, under certain situations this will result in an invalid URI and UniqueId being created for the virtual path and can lead to an undefined failure.
Interface: publishedPartner
Interface: released

Constructor & Destructor Documentation

IMPORT_C ContentAccess::TVirtualPathPtr::TVirtualPathPtr | ( | const TDesC & | aUri,
 |  | const TDesC & | aUniqueId
 | ) |

Constructor used when the URI and UniqueId fields are separate.

Parameters:
aUri | The location of the file
aUniqueId | The location of the content within the file

IMPORT_C ContentAccess::TVirtualPathPtr::TVirtualPathPtr ( const TDesC & aCombinedUriUniqueId )

Constructor used for a concatenated URI and UniqueId.

Note that the descriptor here may be just a URI or it could be a URI concatenated with the file's UniqueId. If it is a concatenated URI and UniqueId the URI and UniqueId will be seperated by the KCafVirtualPathSeparator character. For more information see above.

Parameters:
aCombinedUriUniqueId The location of the content object

IMPORT_C ContentAccess::TVirtualPathPtr::TVirtualPathPtr ( const TVirtualPathPtr & aPtr )

Copy constructor.

Member Function Documentation

IMPORT_C TVirtualPathPtr& ContentAccess::TVirtualPathPtr::operator= ( const TDesC & aCombinedUriUniqueId )

Assignment operator converts a single descriptor to a TVirtualPathPtr.

If the descriptor is just a URI, the TVirtualPathPtr will point to the KDefaultContentObject within that file. If it is a concatenated URI and UniqueId the URI and UniqueId will be seperated by the KCafVirtualPathSeparator. character as detailed in the description above.

IMPORT_C TVirtualPathPtr& ContentAccess::TVirtualPathPtr::operator= ( const TVirtualPathPtr & aVirtualPath )

Assignment operator.

IMPORT_C const TDesC& ContentAccess::TVirtualPathPtr::UniqueId ( ) const

UniqueId supplied by a CAF Agent to identify the object within the file.

Returns:
The location of the content within the file

IMPORT_C const TDesC& ContentAccess::TVirtualPathPtr::URI ( ) const

The location of the file containing the content object.

Returns:
The location of the file

Friends And Related Function Documentation

friend class CVirtualPath [friend]

The documentation for this class was generated from the following file:
  • virtualpathptr.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Hierarchical Index

  • Class List
  • Class Hierarchy
  • Class Members

Content Access Framework Class Hierarchy

Go to the graphical class hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:

  • ContentAccess::CAgentContent
  • ContentAccess::CAgentData
  • ContentAccess::CAgentFactory
  • ContentAccess::CAgentImportFile
  • ContentAccess::CAgentManager
  • ContentAccess::CAgentRightsManager
  • ContentAccess::CContent
  • ContentAccess::CData
  • ContentAccess::CDirStreamable
  • ContentAccess::CEmbeddedObject
  • ContentAccess::CF32AgentUi
  • ContentAccess::CImportFile
  • ContentAccess::CManager
  • ContentAccess::CMetaData
  • ContentAccess::CMetaDataArray
  • ContentAccess::CRightsInfo
  • ContentAccess::CRightsManager
  • ContentAccess::CSupplier
  • ContentAccess::CSupplierOutputFile
  • ContentAccess::CVirtualPath
  • ContentAccess::MAgentRightsBase
  • ContentAccess::RAttributeSet
  • ContentAccess::RStreamablePtrArray< T >
  • ContentAccess::RStringAttributeSet
  • ContentAccess::TAgent
  • ContentAccess::TF32AgentUiFactory
  • ContentAccess::TVirtualPathPtr
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • Class List
  • Class Hierarchy
  • Class Members
  • All
  • Functions
  • Related Functions
  • a
  • c
  • d
  • e
  • f
  • g
  • i
  • l
  • m
  • n
  • o
  • p
  • r
  • s
  • t
  • u
  • w
  • ~

Here is a list of all class members with links to the classes they belong to:

- a -

  • AddL() : ContentAccess::RStringAttributeSet, ContentAccess::CMetaDataArray, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet
  • Agent() : ContentAccess::CContent
  • AgentSpecificCommand() : ContentAccess::CManager, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent
  • AppendL() : ContentAccess::RStreamablePtrArray< T >

- c -

  • Cancel() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • CancelNotifyStatusChange() : ContentAccess::CManager, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent
  • CancelRequestRights() : ContentAccess::CContent, ContentAccess::CAgentContent
  • Close() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::RAttributeSet
  • CloseContainer() : ContentAccess::CContent, ContentAccess::CAgentContent
  • CManager : ContentAccess::CRightsManager
  • ConfirmDeleteL() : ContentAccess::CF32AgentUi
  • ContinueWithNewOutputFile() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • CopyFile() : ContentAccess::CManager, ContentAccess::CAgentManager
  • Count() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::CMetaDataArray, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet
  • CreateContentBrowserL() : ContentAccess::CAgentFactory
  • CreateDataConsumerL() : ContentAccess::CAgentFactory
  • CreateF32AgentUiL() : ContentAccess::TF32AgentUiFactory
  • CreateImporterL() : ContentAccess::CAgentFactory
  • CreateManagerL() : ContentAccess::CAgentFactory
  • CreateRightsManagerL() : ContentAccess::CManager, ContentAccess::CAgentFactory
  • CSupplier : ContentAccess::CImportFile
  • CVirtualPath : ContentAccess::TVirtualPathPtr

- d -

  • Data() : ContentAccess::CMetaData
  • Data8() : ContentAccess::CMetaData
  • DataSizeL() : ContentAccess::CData, ContentAccess::CAgentData
  • DeleteAllRightsObjects() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • DeleteFile() : ContentAccess::CManager, ContentAccess::CAgentManager
  • DeleteRightsObject() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • Description() : ContentAccess::CRightsInfo
  • DisplayInfoL() : ContentAccess::CManager, ContentAccess::CF32AgentUi, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent
  • DisplayManagementInfoL() : ContentAccess::CManager, ContentAccess::CAgentManager

- e -

  • EvaluateIntent() : ContentAccess::CData, ContentAccess::CAgentData
  • ExecuteIntent() : ContentAccess::CData, ContentAccess::CAgentData
  • ExternalizeL() : ContentAccess::CVirtualPath, ContentAccess::CSupplierOutputFile, ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::MAgentRightsBase, ContentAccess::CRightsInfo, ContentAccess::CMetaDataArray, ContentAccess::CMetaData, ContentAccess::CEmbeddedObject, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet

- f -

  • Field() : ContentAccess::CMetaData
  • Field8() : ContentAccess::CMetaData
  • FileName() : ContentAccess::CSupplierOutputFile

- g -

  • GetAttribute() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetAttributeSet() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetCombinedUriUniqueId() : ContentAccess::CVirtualPath
  • GetDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • GetEmbeddedObjectsL() : ContentAccess::CContent, ContentAccess::CAgentContent
  • GetImportStatus() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • GetRightsDataL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • GetStringAttribute() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetStringAttributeSet() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetSuggestedOutputFileExtension() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • GetSuggestedOutputFileName() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • GetValue() : ContentAccess::RStringAttributeSet, ContentAccess::RAttributeSet
  • GetValueLength() : ContentAccess::RStringAttributeSet

- i -

  • ImplementationUid() : ContentAccess::TAgent
  • ImportFileL() : ContentAccess::CSupplier
  • InternalizeL() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::MAgentRightsBase, ContentAccess::RAttributeSet
  • IsImportSupported() : ContentAccess::CSupplier
  • IsRecognizedL() : ContentAccess::CAgentManager

- l -

  • ListAgentsL() : ContentAccess::CManager
  • ListAllRightsL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • ListContentL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • ListRightsL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager

- m -

  • MimeType() : ContentAccess::CEmbeddedObject
  • MimeTypeL() : ContentAccess::CSupplierOutputFile
  • MkDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • MkDirAll() : ContentAccess::CManager, ContentAccess::CAgentManager

- n -

  • Name() : ContentAccess::CEmbeddedObject, ContentAccess::TAgent
  • NewL() : ContentAccess::CVirtualPath, ContentAccess::CSupplierOutputFile, ContentAccess::CSupplier, ContentAccess::CRightsInfo, ContentAccess::CMetaDataArray, ContentAccess::CMetaData, ContentAccess::CManager, ContentAccess::CEmbeddedObject, ContentAccess::CDirStreamable, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentFactory
  • NewLC() : ContentAccess::CSupplier, ContentAccess::CMetaDataArray, ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent
  • NotifyStatusChange() : ContentAccess::CManager, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent

- o -

  • OpenContainer() : ContentAccess::CContent, ContentAccess::CAgentContent
  • OpenContentL() : ContentAccess::CContent
  • OpenContentLC() : ContentAccess::CContent
  • operator const TVirtualPathPtr &() : ContentAccess::CVirtualPath
  • operator=() : ContentAccess::TVirtualPathPtr
  • operator[]() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::CMetaDataArray, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet
  • OutputFileCountL() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • OutputFileL() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • OutputType() : ContentAccess::CSupplierOutputFile

- p -

  • PrepareHTTPRequestHeaders() : ContentAccess::CSupplier, ContentAccess::CAgentManager

- r -

  • RAttributeSet() : ContentAccess::RAttributeSet
  • Read() : ContentAccess::CData, ContentAccess::CAgentData
  • RecognizeFileL() : ContentAccess::CAgentManager
  • RemoveL() : ContentAccess::RStreamablePtrArray< T >
  • RenameDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • RenameFile() : ContentAccess::CManager, ContentAccess::CAgentManager
  • RequestRights() : ContentAccess::CContent, ContentAccess::CAgentContent
  • ResetAndDestroy() : ContentAccess::RStreamablePtrArray< T >
  • RightsStatus() : ContentAccess::CRightsInfo
  • RightsType() : ContentAccess::CRightsInfo
  • RmDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • RStreamablePtrArray() : ContentAccess::RStreamablePtrArray< T >
  • RStringAttributeSet() : ContentAccess::RStringAttributeSet

- s -

  • Search() : ContentAccess::CContent, ContentAccess::CAgentContent
  • SearchL() : ContentAccess::CMetaDataArray
  • Seek() : ContentAccess::CData, ContentAccess::CAgentData
  • SetOutputDirectoryL() : ContentAccess::CSupplier
  • SetProperty() : ContentAccess::CRightsManager, ContentAccess::CManager, ContentAccess::CF32AgentUi, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentRightsManager, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • SetValue() : ContentAccess::RStringAttributeSet, ContentAccess::RAttributeSet, ContentAccess::TAgent
  • Sort() : ContentAccess::CDirStreamable

- t -

  • TVirtualPathPtr() : ContentAccess::TVirtualPathPtr
  • Type() : ContentAccess::CEmbeddedObject

- u -

  • UniqueId() : ContentAccess::TVirtualPathPtr, ContentAccess::CVirtualPath, ContentAccess::CRightsInfo, ContentAccess::CEmbeddedObject
  • URI() : ContentAccess::TVirtualPathPtr, ContentAccess::CVirtualPath

- w -

  • WriteData() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • WriteDataComplete() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile

- ~ -

  • ~CAgentFactory() : ContentAccess::CAgentFactory
  • ~CContent() : ContentAccess::CContent
  • ~CData() : ContentAccess::CData
  • ~CDirStreamable() : ContentAccess::CDirStreamable
  • ~CEmbeddedObject() : ContentAccess::CEmbeddedObject
  • ~CImportFile() : ContentAccess::CImportFile
  • ~CManager() : ContentAccess::CManager
  • ~CMetaData() : ContentAccess::CMetaData
  • ~CMetaDataArray() : ContentAccess::CMetaDataArray
  • ~CRightsInfo() : ContentAccess::CRightsInfo
  • ~CRightsManager() : ContentAccess::CRightsManager
  • ~CSupplier() : ContentAccess::CSupplier
  • ~CSupplierOutputFile() : ContentAccess::CSupplierOutputFile
  • ~CVirtualPath() : ContentAccess::CVirtualPath
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Namespace Index

  • Namespace List
  • Namespace Members

Content Access Framework Namespace List

Here is a list of all namespaces with brief descriptions:
ContentAccess
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ContentAccess Namespace Reference

  • Namespace List
  • Namespace Members

ContentAccess Namespace Reference

Classes

class | TAgent
Represents the name of a single CAF agent. More...
class | CAgentFactory
Abstract interface handed out by an ECOM agent implementation by REComSession::CreateImplementationL(). More...
class | CAgentData
Defines the agent interface for consumer operations such as reading and seeking within a content object in a file. More...
class | CAgentContent
Defines the agent interface allowing clients to browse the objects within a file. More...
class | CAgentImportFile
Defines the interface for importing files into a Content access agent. More...
class | CAgentManager
Defines the agent interface for manager operations. More...
class | CAgentRightsManager
Manages and retrieves rights objects from an agent. More...
class | RAttributeSet
Holds the values of a predefined set of attributes based upon ContentAccess::TAttribute. More...
class | CContent
CContent allows applications to browse the content objects contained within a single file and construct a CData object for reading that content. More...
class | CData
Allows clients to read data from a content object. More...
class | CDirStreamable
Emulates the behavior of a CDir object with the addition of streaming. More...
class | CEmbeddedObject
Represents a content object embedded within a file The agent defined uniqueId field describes the location of the object within the file. More...
class | CF32AgentUi
Interface that must be implemented in order for the F32 agent to display information on the screen. More...
class | TF32AgentUiFactory
Factory function that creates the F32 Agent UI. More...
class | CImportFile
Created by the CSupplier to import a file. More...
class | CManager
Manages files and content access agents. More...
class | CMetaData
Stores a field and data pair for use in a supplier import operation. More...
class | CMetaDataArray
Stores an array of CMetaData objects for use in a supplier import operation. More...
class | CRightsInfo
Rights class to store a summary description of the rights and a unique reference to the rights object within an Agent. More...
class | MAgentRightsBase
Interface used by agents as a base class for their own rights objects. More...
class | CRightsManager
Manages and retrieves rights objects from an agent. More...
class | RStreamablePtrArray
Template class used to store an array of pointers that can also write itself to a stream. More...
class | RStringAttributeSet
Holds the values of a predefined set of attributes based upon ContentAccess::TStringAttribute. More...
class | CSupplier
Used to import files using a content access agent. More...
class | CSupplierOutputFile
Holds the details of an output file produced by CAF. More...
class | CVirtualPath
A virtual path describes the location of the file (URI) and the location of a content object within that file (Unique Id). More...
class | TVirtualPathPtr
Identifies the location of a file and a particular content object inside it. More...

Enumerations

enum TContentShareMode {
EContentShareReadOnly = 0, EContentShareReadWrite = 1,
EContentShareExclusive = 2
}
Defines the share modes available when opening content for consumption. More...
enum TIntent {
EPeek = 0, EPlay = 1,
EView = 2, EExecute = 3,
EPrint = 4, EPause = 5,
EContinue = 6, EStop = 7,
EUnknown = 8, EInstall = 9
}
Set of valid reader intents when opening content. More...
enum | TOutputType { EContent = 0, EReceipt = 1 }
Defines the types of output file produced when importing files into the Content Access Famework using CImportFile Remember to update any DRM agents if new values are added here. More...
enum TImportStatus {
EInProgress, EWaitingForNewOutputFile,
EComplete, EFailed,
EUnsupportedMedia
}
The agent status codes reported when importing a file with the supplier API Remember to update any DRM agents if new values are added here. More...
enum TAttribute {
EIsProtected = 0, EIsForwardable = 1,
EIsModifyable = 2, EIsCopyable = 3,
ECanPlay = 4, ECanPrint = 5,
ECanExecute = 6, ECanView = 7,
ERightsNone = 8, ERightsPending = 9,
ERightsHaveExpired = 10, EPreviewAvailable = 11,
EContentCDataInUse = 12, ECanRewind = 13,
ECopyPaste = 14, ERightsConsumable = 15,
ERightsStateless = 16, ECanMove = 17,
ECanRename = 18, ECanAutomaticConsume = 19,
EContentVersion = 20, EAgentSpecificAttributeBase = 32768
}
The list of generic content object attributes. More...
enum TStringAttribute {
EDescription = 0, EMimeType = 1,
ETitle = 2, EAuthor = 3,
EIconURI = 4, EPreviewURI = 5,
EContentURI = 6, EContentID = 7,
EInfoURL = 8, EPendingRightsETA = 9,
ETransactionID = 10, EContentLocation = 11,
ERightsIssuerURI = 12, EAgentSpecificStringAttributeBase = 32768
}
The list of generic string attributes. More...
enum | TEventMask { ERightsAvailable = 1, ERightsExpired = 2 }
Events relating to DRM objects, powers of 2 so they can be OR'd Remember to update any DRM agents if new values are added here. More...
enum TEmbeddedType {
EContainerObject = 0, EContentObject = 1,
EAgentSpecificObject = 2
}
The type of object inside a DRM file Remember to update any DRM agents if new values are added here. More...
enum TDisplayInfo {
EFileProperties = 0, EFileAndRights = 1,
ERights = 2
}
Type of information to display Remember to update any DRM agents if new values are added here. More...
enum | TRightsTypeMask { ERightsTypeConsumable = 1, ERightsTypeStateless = 2 }
The type of rights object. More...
enum TRightsStatus {
ERightsStatusNone = 0, ERightsStatusValid = 1,
ERightsStatusExpired = 2, ERightsStatusPending = 3
}
State of a rights object Remember to update any DRM agents if new values are added here. More...
enum TAgentProperty {
EAgentPropertyBufferSize = 0, EAgentPropertyAgentUI = 1,
EAgentPropertyMultipleSequence = 2
}
Defines the properties that an application can set in an agent. More...

Functions

_LIT (KDefaultContentObject,"DEFAULT")
The Unique Id that identifies the default content object within any file.
_LIT (KCafVirtualPathSeparator,"|")
The character used to separate the URI from the UniqueId when the two are concatenated into a single descriptor.

Variables

const TUid | KCAAgentInterfaceUid = {0x10204740}
The CAF 2.0 agent interface UID.
const TInt | KMaxCafUniqueId = 1024
Maximum length of a content or container unique id.
const TInt | KMaxCafContentName = 1024
Maximum length of a content object name.

Enumeration Type Documentation

enum ContentAccess::TAgentProperty

Defines the properties that an application can set in an agent.

Remember to update any DRM agents if new values are added here.

Enumerator:
EAgentPropertyBufferSize | Set the buffer size used by the agent when reading content. This can be used to optimise performance.
EAgentPropertyAgentUI | Enable or disable the Agent's user interface for errors and confirmation requests. 0 = Disable Agent UI, 1 = Enable Agent UI.
EAgentPropertyMultipleSequence | Communicates to the agent that a series of operations are to be performed as part of one larger operation. eg. deleting multiple files, the value should be set back to zero when the sequence is finished. 0 = Not performing a multiple sequence, 1 = performing a multiple sequence.

enum ContentAccess::TAttribute

The list of generic content object attributes.

Each of these attributes has a value that is either ETrue or EFalse unless otherwise specified Remember to update any DRM agents if new values are added here.

  • ETrue If an attribute is true
  • EFalse If the attribute is false
Enumerator:
EIsProtected | Content object is protected.
EIsForwardable | Content object can be forwarded to another device or copied to removable media.
EIsModifyable | The content can be modified.
EIsCopyable | The content object can be duplicated in internal storage.
ECanPlay | Rights exist allowing the content to be played.
ECanPrint | Rights exist allowing the content to be printed.
ECanExecute | Rights exist allowing the content to be executed.
ECanView | Rights exist allowing the content to be viewed on screen.
ERightsNone | No rights exist for the content object.
ERightsPending | Rights are expected to arrive soon.
ERightsHaveExpired | Rights were were present but have since expired or been consumed.
EPreviewAvailable | A preview URI is available.
EContentCDataInUse | Set if the content is currently being used by another CData session.
ECanRewind | Media can be rewound without decrementing rights.
ECopyPaste | can make copies via the clipboard
ERightsConsumable | Rights are consumable. The are decremented whenever content is accessed (ie. play counts).
ERightsStateless | Rights are stateless and the content can be used repeatedly until a condition expires (ie. expiry date).
ECanMove | Content can be moved.
ECanRename | Content can be renamed.
ECanAutomaticConsume | Rights can be consumed automatically when the content object is used for say wallpaper.
EContentVersion | Version identifying the incarnation of the content object.
EAgentSpecificAttributeBase | Base index the agents should use when implementing new agent specific attributes.

enum ContentAccess::TContentShareMode

Defines the share modes available when opening content for consumption.

These modes have no effect unless the content is a file stored on the device. Remember to update any DRM agents if new values are added here.

Enumerator:
EContentShareReadOnly | Client will only read and expects others will only read.
EContentShareReadWrite | Client expects to read and write and others will read and write.
EContentShareExclusive | Client will have exclusive access to the file. This can only be used for unprotected content.

enum ContentAccess::TDisplayInfo

Type of information to display Remember to update any DRM agents if new values are added here.

Enumerator:
EFileProperties | Display file name, last modified date etc.
EFileAndRights | Display file information and DRM rights information.
ERights | Display DRM rights information only.

enum ContentAccess::TEmbeddedType

The type of object inside a DRM file Remember to update any DRM agents if new values are added here.

Enumerator:
EContainerObject | A container object.
EContentObject | A content object.
EAgentSpecificObject | An agent specific object.

enum ContentAccess::TEventMask

Events relating to DRM objects, powers of 2 so they can be OR'd Remember to update any DRM agents if new values are added here.

Enumerator:
ERightsAvailable | Rights have arrived for the content object.
ERightsExpired | Rights have expired or have been exhausted.

enum ContentAccess::TImportStatus

The agent status codes reported when importing a file with the supplier API Remember to update any DRM agents if new values are added here.

Enumerator:
EInProgress | The import operation is proceeding with no error.
EWaitingForNewOutputFile | The agent is waiting for the client application to provide a new output file by calling ContinueWithNewOutputFile().
EComplete | The import operation is complete.
EFailed | The import was aborted by the agent.
EUnsupportedMedia | The mime-type of the content is not supported on this device.

enum ContentAccess::TIntent

Set of valid reader intents when opening content.

Remember to update any DRM agents if new values are added here.

Enumerator:
EPeek | Reader intends to peek at content.
EPlay | Reader intends to play content.
EView | Reader intends to view content.
EExecute | Reader intends to execute content.
EPrint | Reader intends to print content.
EPause | Reader pauses play operation.
EContinue | Reader continues play operation after a pause operation.
EStop | Reader stops play operation.
EUnknown | Reader is uncertain of how the content will be used. Permits free access to unprotected data but prevents access to protected content.
EInstall | Reader intends to install content.

enum ContentAccess::TOutputType

Defines the types of output file produced when importing files into the Content Access Famework using CImportFile Remember to update any DRM agents if new values are added here.

Enumerator:
EContent | Content file produced.
EReceipt | Receipt for rights produced.

enum ContentAccess::TRightsStatus

State of a rights object Remember to update any DRM agents if new values are added here.

Enumerator:
ERightsStatusNone | Rights do not exist.
ERightsStatusValid | Rights are valid, ready to use.
ERightsStatusExpired | Rights have all expired.
ERightsStatusPending | Rights are expected soon.

enum ContentAccess::TRightsTypeMask

The type of rights object.

A rights object can be consumable and stateless so these can be OR'd together to form a bit mask Remember to update any DRM agents if new values are added here.

Enumerator:
ERightsTypeConsumable | Rights are consumable. The are decremented whenever content is accessed (ie. play counts).
ERightsTypeStateless | Rights are stateless and the content can be used repeatedly until a condition expires (ie. expiry date).

enum ContentAccess::TStringAttribute

The list of generic string attributes.

Each of these attributes has a value that is returned to the client as a string. Remember to update any DRM agents if new values are added here.

Enumerator:
EDescription | Description of the embedded object.
EMimeType | Mime type of the content object.
ETitle | Title of the object.
EAuthor | Author of the object.
EIconURI | Location of the icon for this content.
EPreviewURI | Location of a preview of the content.
EContentURI | URI where this content can be acquired from.
EContentID | Unique CID for this content.
EInfoURL | Location of further information about this content.
EPendingRightsETA | Expected number of seconds before the rights arrive.
ETransactionID | Transaction ID for content object. It may be used to track the content flow from one user to another one.
EContentLocation | Location attribute of a content object. May be used as a reference for the object within the content file or as a filename for the object when exported.
ERightsIssuerURI | URI where the rights for this content may be acquired from.
EAgentSpecificStringAttributeBase | Base index the agents should use when implementing new string attributes.

Function Documentation

ContentAccess::_LIT | ( | KCafVirtualPathSeparator | ,
 |  | "|" |
 | ) |

The character used to separate the URI from the UniqueId when the two are concatenated into a single descriptor.

ContentAccess::_LIT | ( | KDefaultContentObject | ,
 |  | "DEFAULT" |
 | ) |

The Unique Id that identifies the default content object within any file.

Variable Documentation

const TUid ContentAccess::KCAAgentInterfaceUid = {0x10204740}

The CAF 2.0 agent interface UID.

const TInt ContentAccess::KMaxCafContentName = 1024

Maximum length of a content object name.

const TInt ContentAccess::KMaxCafUniqueId = 1024

Maximum length of a content or container unique id.

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • _
  • e
  • k
  • t

Here is a list of all file members with links to the files they belong to:

- _ -

  • _LIT() : virtualpathptr.h, caftypes.h, cafpanic.h

- e -

  • EAgentPropertyAgentUI : caftypes.h
  • EAgentPropertyBufferSize : caftypes.h
  • EAgentPropertyMultipleSequence : caftypes.h
  • EAgentSpecificAttributeBase : caftypes.h
  • EAgentSpecificObject : caftypes.h
  • EAgentSpecificStringAttributeBase : caftypes.h
  • EAuthor : caftypes.h
  • ECafPanicContentIteratorThreadPanic : cafpanic.h
  • ECafPanicContentIteratorUnknownRequest : cafpanic.h
  • ECafPanicDuplicateF32Agent : cafpanic.h
  • ECafPanicF32AgentImportNotSupported : cafpanic.h
  • ECafPanicF32AgentManagementInfoNotSupported : cafpanic.h
  • ECafPanicF32AgentPrepareHTTPHeadersNotSupported : cafpanic.h
  • ECafPanicF32AgentRightManagerNotSupported : cafpanic.h
  • ECafPanicNoF32Agent : cafpanic.h
  • ECanAutomaticConsume : caftypes.h
  • ECanExecute : caftypes.h
  • ECanMove : caftypes.h
  • ECanPlay : caftypes.h
  • ECanPrint : caftypes.h
  • ECanRename : caftypes.h
  • ECanRewind : caftypes.h
  • ECanView : caftypes.h
  • EComplete : caftypes.h
  • EContainerObject : caftypes.h
  • EContent : caftypes.h
  • EContentCDataInUse : caftypes.h
  • EContentID : caftypes.h
  • EContentLocation : caftypes.h
  • EContentObject : caftypes.h
  • EContentShareExclusive : caftypes.h
  • EContentShareReadOnly : caftypes.h
  • EContentShareReadWrite : caftypes.h
  • EContentURI : caftypes.h
  • EContentVersion : caftypes.h
  • EContinue : caftypes.h
  • ECopyPaste : caftypes.h
  • EDescription : caftypes.h
  • EExecute : caftypes.h
  • EFailed : caftypes.h
  • EFileAndRights : caftypes.h
  • EFileProperties : caftypes.h
  • EIconURI : caftypes.h
  • EInfoURL : caftypes.h
  • EInProgress : caftypes.h
  • EInstall : caftypes.h
  • EIsCopyable : caftypes.h
  • EIsForwardable : caftypes.h
  • EIsModifyable : caftypes.h
  • EIsProtected : caftypes.h
  • EMimeType : caftypes.h
  • EPause : caftypes.h
  • EPeek : caftypes.h
  • EPendingRightsETA : caftypes.h
  • EPlay : caftypes.h
  • EPreviewAvailable : caftypes.h
  • EPreviewURI : caftypes.h
  • EPrint : caftypes.h
  • EReceipt : caftypes.h
  • ERights : caftypes.h
  • ERightsAvailable : caftypes.h
  • ERightsConsumable : caftypes.h
  • ERightsExpired : caftypes.h
  • ERightsHaveExpired : caftypes.h
  • ERightsIssuerURI : caftypes.h
  • ERightsNone : caftypes.h
  • ERightsPending : caftypes.h
  • ERightsStateless : caftypes.h
  • ERightsStatusExpired : caftypes.h
  • ERightsStatusNone : caftypes.h
  • ERightsStatusPending : caftypes.h
  • ERightsStatusValid : caftypes.h
  • ERightsTypeConsumable : caftypes.h
  • ERightsTypeStateless : caftypes.h
  • EStop : caftypes.h
  • ETitle : caftypes.h
  • ETransactionID : caftypes.h
  • EUnknown : caftypes.h
  • EUnsupportedMedia : caftypes.h
  • EView : caftypes.h
  • EWaitingForNewOutputFile : caftypes.h

- k -

  • KCAAgentInterfaceUid : agentfactory.h
  • KCafLoadPostProductionAgents : patchdata.h
  • KErrCA_LowerLimit : caferr.h
  • KErrCA_UpperLimit : caferr.h
  • KErrCACorruptContent : caferr.h
  • KErrCACorruptRights : caferr.h
  • KErrCANewFileHandleRequired : caferr.h
  • KErrCANoAgent : caferr.h
  • KErrCANoPermission : caferr.h
  • KErrCANoRights : caferr.h
  • KErrCANotSupported : caferr.h
  • KErrCAOutOfRange : caferr.h
  • KErrCAPendingRights : caferr.h
  • KErrCASizeNotDetermined : caferr.h
  • KMaxAgentNameLength : agent.h
  • KMaxCafContentName : caftypes.h
  • KMaxCafUniqueId : caftypes.h
  • KMaxSIDLength : agent.h

- t -

  • TAgentProperty : caftypes.h
  • TAttribute : caftypes.h
  • TCafPanics : cafpanic.h
  • TContentShareMode : caftypes.h
  • TDisplayInfo : caftypes.h
  • TEmbeddedType : caftypes.h
  • TEventMask : caftypes.h
  • TImportStatus : caftypes.h
  • TIntent : caftypes.h
  • TOutputType : caftypes.h
  • TRightsStatus : caftypes.h
  • TRightsTypeMask : caftypes.h
  • TStringAttribute : caftypes.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • Namespace List
  • Namespace Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • _
  • e
  • k
  • t

Here is a list of all namespace members with links to the namespace documentation for each member:

- _ -

  • _LIT() : ContentAccess

- e -

  • EAgentPropertyAgentUI : ContentAccess
  • EAgentPropertyBufferSize : ContentAccess
  • EAgentPropertyMultipleSequence : ContentAccess
  • EAgentSpecificAttributeBase : ContentAccess
  • EAgentSpecificObject : ContentAccess
  • EAgentSpecificStringAttributeBase : ContentAccess
  • EAuthor : ContentAccess
  • ECanAutomaticConsume : ContentAccess
  • ECanExecute : ContentAccess
  • ECanMove : ContentAccess
  • ECanPlay : ContentAccess
  • ECanPrint : ContentAccess
  • ECanRename : ContentAccess
  • ECanRewind : ContentAccess
  • ECanView : ContentAccess
  • EComplete : ContentAccess
  • EContainerObject : ContentAccess
  • EContent : ContentAccess
  • EContentCDataInUse : ContentAccess
  • EContentID : ContentAccess
  • EContentLocation : ContentAccess
  • EContentObject : ContentAccess
  • EContentShareExclusive : ContentAccess
  • EContentShareReadOnly : ContentAccess
  • EContentShareReadWrite : ContentAccess
  • EContentURI : ContentAccess
  • EContentVersion : ContentAccess
  • EContinue : ContentAccess
  • ECopyPaste : ContentAccess
  • EDescription : ContentAccess
  • EExecute : ContentAccess
  • EFailed : ContentAccess
  • EFileAndRights : ContentAccess
  • EFileProperties : ContentAccess
  • EIconURI : ContentAccess
  • EInfoURL : ContentAccess
  • EInProgress : ContentAccess
  • EInstall : ContentAccess
  • EIsCopyable : ContentAccess
  • EIsForwardable : ContentAccess
  • EIsModifyable : ContentAccess
  • EIsProtected : ContentAccess
  • EMimeType : ContentAccess
  • EPause : ContentAccess
  • EPeek : ContentAccess
  • EPendingRightsETA : ContentAccess
  • EPlay : ContentAccess
  • EPreviewAvailable : ContentAccess
  • EPreviewURI : ContentAccess
  • EPrint : ContentAccess
  • EReceipt : ContentAccess
  • ERights : ContentAccess
  • ERightsAvailable : ContentAccess
  • ERightsConsumable : ContentAccess
  • ERightsExpired : ContentAccess
  • ERightsHaveExpired : ContentAccess
  • ERightsIssuerURI : ContentAccess
  • ERightsNone : ContentAccess
  • ERightsPending : ContentAccess
  • ERightsStateless : ContentAccess
  • ERightsStatusExpired : ContentAccess
  • ERightsStatusNone : ContentAccess
  • ERightsStatusPending : ContentAccess
  • ERightsStatusValid : ContentAccess
  • ERightsTypeConsumable : ContentAccess
  • ERightsTypeStateless : ContentAccess
  • EStop : ContentAccess
  • ETitle : ContentAccess
  • ETransactionID : ContentAccess
  • EUnknown : ContentAccess
  • EUnsupportedMedia : ContentAccess
  • EView : ContentAccess
  • EWaitingForNewOutputFile : ContentAccess

- k -

  • KCAAgentInterfaceUid : ContentAccess
  • KMaxCafContentName : ContentAccess
  • KMaxCafUniqueId : ContentAccess

- t -

  • TAgentProperty : ContentAccess
  • TAttribute : ContentAccess
  • TContentShareMode : ContentAccess
  • TDisplayInfo : ContentAccess
  • TEmbeddedType : ContentAccess
  • TEventMask : ContentAccess
  • TImportStatus : ContentAccess
  • TIntent : ContentAccess
  • TOutputType : ContentAccess
  • TRightsStatus : ContentAccess
  • TRightsTypeMask : ContentAccess
  • TStringAttribute : ContentAccess
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Page Index

Content Access Framework Related Pages

Here is a list of all related documentation pages:
  • Introduction
  • Architecture
  • Consumer API (Browsing and reading from content files)
  • Files containing multiple content objects
  • Content Object Attributes
  • Importing files into the Content Access Framework
  • Managing files with the Content Access Framework
  • Managing CAF Agents
  • Rights Manager API
  • Handling data corruption
  • CAF and the User Interface
  • How to write an Apparc recognizer for the Content Access Framework
  • Content Access Agent ECOM Resource File
  • Backup and Restore
  • Example source code using CAF
  • Making an asynchronous SendReceive() call in an agent plugin
  • Considerations for Licensees using CAF
  • CAF v2.19 Release Notes
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Introduction

Introduction

Contents

  • Status
  • Overview
  • CAF Agents
  • Agent Interfaces
  • Content Access Framework APIs
  • Access to content within archive files
  • Digital Rights Management (DRM)
  • DRM Intent
  • The F32 Agent
  • Sharing Content in a Private Directory
  • Delivery

Status

The Content Access Framework is at released status in Symbian OS v9.1

Overview

The Symbian OS Content Access Framework (CAF) provides services that enable agents to publish content in a generic manner that is easy for applications to use.

Applications will access content the same way regardless of whether the content is plain text, located in a server's private directory, or DRM protected.

Content can be, for example, media files or a level in a game; applications would be, for example, a video/sound player or an internet browser; DRM stands for Digital Rights Management.

CAF Agents

The CAF defines an ECom plug-in interface, for third-party CAF Agents. The interface allows new agents to be integrated at a later date, dynamically if required. The specification for this interface can be found in ContentAccess::CAgentFactory.

CAF Agents can be written to provide the following functions:

  • Indirect access to a private server directory
  • Plain text access to protected content (even if the content is encrypted)
The CAF framework does not provide any capability enforcement so it is the responsiblity of the agent to police access to the APIs. The agent can choose to deny some operations in the CAF API based upon application's capabilities or the agent's own policy relating to the use of that API.

Agent Interfaces

A CAF agent must implement a concrete factory derived from ContentAccess::CAgentFactory. This is the ECom interface for a CAF Agent.

The agent's factory will produce products derived from:

  1. ContentAccess::CAgentContent
  2. ContentAccess::CAgentData
  3. ContentAccess::CAgentImportFile
  4. ContentAccess::CAgentManager
  5. ContentAccess::CAgentRightsManager

These products provide the services described in the introduction (above) on a per agent basis.

Content Access Framework APIs

Generally, these APIs fall into four areas:

Supplier API

The Supplier API is used to handle the delivery and transformation of content. It can be used to transform DRM protected files when they arrive on a device into a form that allows them to be stored securely on the device.

It can also be used intercept content and ensure it is stored in an agent's private directory.

See the classes ContentAccess::CSupplier and ContentAccess::CImportFile

Consumer API

Allows applications to read the content as if it were stored as plain text regardless of how it is actually stored on the device. For instance it might be encrypted.

The consumer API will be used by applications rendering content and/or multimedia plug-ins. By rendering we mean reading data from a file, transforming it, then playing or displaying it on the device.

See the classes ContentAccess::CContent and ContentAccess::CData.

Manager API

The management of files and content access agents.

See ContentAccess::CManager

Rights Manager API

A generic API used to manage DRM rights within a particular DRM agent

See ContentAccess::CRightsManager

Access to content within archive files

An archive file contains content objects and other containers within the file. Each container within the file may contain more content objects or further containers. Common examples of archive files are zip and tar files.

The Content Access Framework allows applications to open archive files and read content from inside them. The content objects and containers inside the file can be traversed using the ContentAccess::CContent class.

This class allows applications to use the content within these container files without needing to understand any specifics of the compression or storage mechanism used by the archive.

Digital Rights Management (DRM)

The Content Access Framework also provides an abstact way to access DRM protected content. An agent can be designed to implement a DRM scheme.

Applications use DRM protected files in the same way they would use any other file. The agent enforces the rights applied to the content. Also, it prevents access when rights have expired or if the file is accessed by applications without DRM capability.

To enforce the protection of the content the agent must know what the client intends to do with the content once it has read the plain-text version of that content. Therefore, applications must specify their intent before using DRM protected content, see DRM Intent.

Applications should always specify their intent, whether or not they will using DRM protected content. Non-DRM agents will just ignore the call, but it means the application does not need to treat DRM content as a special case.

One occasion where applications do need to treat DRM as a special case is where User Interface menu items may need to be disabled. For example, save or send via Bluetooth may not be permitted. Applications can use the GetAttribute() functions to determine whether the operation is allowed on any given content object.

Finally any application or plug-in that reads DRM content must handle the unencrypted version of the content responsibly. Only applications proven to work this way will be given the DRM capability.

DRM Intent

The evaluation of DRM rights hinges on the correct supply of 'DRM Intent' from the trusted rendering application to the Content Access Framework. The framework provides a number of options so that the application can query and evaluate rights appropriately.

Briefly, the CAF allows a renderer to:

  • Evalute intent
    e.g., ask the question "Could I play this now if I wanted to?".
    Here, the ability is queried, but no stateful rights modifications are made.
  • Execute intent
    e.g., indicate "I have played this now".
    In this example, the CAF would instruct the agent to evaluate and process the rights, thus modifying any stateful rights (i.e., rights that have state, e.g. content that has an expiry date or content that can only be played three times, say).

Essentially, renders will begin by evaluating intent when the CData object is created. When the content has been rendered successfully, they will execute the intent to ensure that stateful rights are then processed.

The recommended intent values (for renders and agents to support) are given in ContentAccess::TIntent:

  • EPeek: Do not process or evaluate rights in any way
  • EPlay: Play the target content (OMA)
  • Eview: View the target content (OMA)
  • EExecute: Execute the target content (OMA). Note: only supported in a Java context
  • EPrint: Print the target content (OMA)
  • EPause: Pause content playback
  • EContinue: Continue content playback
  • EUnknown: Client has no idea what the content will be used for. DRM Agents can deny this intent allowing only unprotected content to be accessed this way.

The F32 Agent

The F32 Agent provides access to unprotected files. It is really just a wrapper around RFile. The Content Access Framework treats the F32 agent as a special case. If no other suitable agent is responsible for a file or directory the F32 Agent will be used.

The F32 Agent runs in the same process and thread as the calling application so any file operations it performs will be limited to the file operations permitted for the calling application's process

Sharing Content in a Private Directory

Some agents may provide access to files stored in their private directory. They can advertise the files' existence to applications through their implementation of the ContentAccess::CAgentManager::GetDir() function.

In the file system the private directories have the format

\private\xxxxxxxx\directory_1\...directory_n\filename.ext

where xxxxxxxx is the UID of the agent.

CAF will translate that path so applications see the file as:

\private\agent_name\directory_1\...directory_n\filename.ext

where agent_name is the name of the agent.

When an application opens a file stored in the private directory, CAF selects the agent which handles that content based upon the name in the path. If the file is not stored in a private directory, CAF asks each of the agents in turn whether they support the file. If no agent supports the file, it will be read as plaintext using the F32Agent.

Delivery

  • CAF.DLL - Content Access Framework (the application level APIs)
  • CAFUTILS.DLL - Utility classes used by agents, applications and CAF itself
  • F32AGENT.DLL - Agent for reading unprotected files
  • F32AGENTUI.DLL - Agent for reading unprotected files
  • RECCAF.DLL - Data Recognizer for all agents within the Content Access Framework

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Architecture

Architecture

  • Overview
  • Client / Server Agents
  • Client / Server implementation guidelines
  • DRM Capability
  • Using CAF to read from other server private directories

Overview

The Content Access Framework provides a common interface for applications to access content. In effect it behaves as a switch between different agents, known as Content Access Agents.

Each agent is an ECOM plugin, which implements the Content Access Agent interface 0x10204740. This interface should be a static function that creates and returns an instance of a class derived from ContentAccess::CAgentFactory (e.g. ContentAccess::CF32AgentFactory).

static CAgentFactory* AgentImplementationFunction();

There is a special agent supplied by Symbian known as the F32Agent. This agent is used as a fallback for reading unprotected content files. If no other agent recognizes a file the F32 agent will be used to read it. In effect, this is the same as opening the file using an RFile, but allows the application to use the same code to read protected and unprotected content.

The following diagram illustrates the implementation of CAF with two fictitious agents (OMA and MPEG).

Client / Server Agents

The problem with this implementation is that all three agents are loaded into the application's process space, which represents a security risk. The application could potentially access the key used to decrypt protected content.

A better solution is to implement the parts of the agent that require access to encryption/decryption keys or rights in a separate server process. When platform security is enabled the server implementation also allows the APIs to be policed by the agent server DLL to ensure only applcations with the right capabilities will have access to the content.

To improve performance any functionality that does not require access to keys or rights should be implemented in the client side DLL. Client side functionality reduces the number of context switches the processor needs to perform resulting in improved performance from the agent.

There is no need to implement the F32 agent in a server process since it is only used to access unprotected content.

Client / Server implementation guidelines

The following guidelines are suggested for implementing Client/Server agents, but may not be appropriate for all agents.

Client Side Functionality

  • Implement the Content Access Agent ECOM interface
  • Browse the contents of files
  • Retrieve attributes or meta-data from a file
  • All functions requiring the agent to display a user interface or dialog
  • File recognition (for client applications and Apparc MIME types)
  • Marshall calls to the server side

Server Side Functionality

  • Content Encryption (protecting plaintext)
  • Content Decryption (reading DRM content)
  • Manage, protect and store Rights
  • Any potentially destructive operation such as deleting content or rights
  • Notifications
  • Capability Enforcement

DRM Capability

The APIs provided in this document indicate the functions that are likely to require a client process to have DRM capability in order to use the functionality. The client process will only need DRM capability if it attempts to read DRM content using an CAF agent that implements a DRM protection scheme.

The capability can only be enforced by the CAF agent running in a separate server process, so it is the responsibility of the agent to ensure the client process has the required capabilities.

There are no capabilities required to use unprotected content.

Using CAF to read from other server private directories

CAF is used to read unprotected or DRM protected content. It is a client side DLL that must be linked with the process using CAF.

The agents may run in separate processes and will not have the correct capabilities to open files in TCB or server private directories using just a file name. These files must be opened by the process that owns the file and an open RFile handle passed to CAF in order to read them.

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Consumer API (Browsing and reading from content files)

Consumer API (Browsing and reading from content files)

  • An Example Content File
  • Creating a CContent Object
  • Listing objects within a container
  • Opening a container
  • Closing a Container
  • Searching for a MIME type within a file
  • Reading data from a content object
  • Content Object Notifications
  • Handling Rights for DRM content
  • Agent resolution during CContent object creation

NOTE: For the purpose of clarity we have ommitted full error checking in the code examples given below. For examples with error checking see Reading from a file, with error checking.

An Example Content File

An example content file is given below. It has a number of content objects and a number of containers with other containers and content objects inside. It is likely that each container will have information or meta-data related to the collection of objects it holds.

Creating a CContent Object

The ContentAccess::CContent object encapsulates a single file. It allows an application to look at the structure of the objects within the file and the attributes of those objects.

There a two ways to create a CContent object. The application can specify the URI of the content or it can supply an open file handle.

// Create a CContent with a URI
CContent* content = CContent::NewL(uri);

// Create a CContent with an existing file handle
CContent* content = CContent::NewL(aFs, aFile);

Upon creation, CContent selects the agent that will handle the file. For details on how this selection is done see Agent resolution during CContent object creation.

Listing objects within a container

ContentAccess::CContent acts like a cursor, only able to list the contents of one container object at any one time. When CContent is first opened it views the top level container within the file. The top level container is actually the file itself. This top level container concept applies to all files, regardless of how many content or container objects are inside.

Even a content file such as a JPEG image is a container, it's just that the file only has the "DEFAULT" object embedded inside.

So when the example file shown earlier is opened the following objects can be seen by the CContent:

In this top level container there is only one embedded content object visible (the .jpg file) and two embedded container objects.

// Create an array to store the results of CContent::GetEmbeddedObjectsL()
RStreamablePtrArray<CEmbeddedObject> myArray;
CleanupClosePushL(myArray);

// Get the embedded content objects in the current container
content->GetEmbeddedObjectsL(myArray, EContentObject);

i = myArray.Count();  // One content object

// clear the contents of the array
myArray.ResetAndDestroy();

// Get the number of container objects in the current container
content->GetEmbeddedObjectsL(myArray, EContainerObject);

i = myArray.Count(); // Two container objects

// clear the contents of the array
myArray->ResetAndDestroy();

Opening a container

To investigate the objects inside a container CContent must first open the container. This changes CContent's focus from the current container to the container specified in the ContentAccess::CContent::OpenContainer() function.

Opening Container 1 from the top level of the file

// Get the container objects in the top level of the file
content->GetEmbeddedObjectsL(myArray, EContainerObject);

// Find the Unique Id of the first container
TPtrC UniqueId = myArray[0]->UniqueId();

// Open the first container
content->OpenContainer(UniqueId);

Now CContent can see the contents of Container 1:

At this point, listing the objects that CContent can see gives six MP3 files and one container object.

...
// Get the embedded content objects in the current container
content->GetEmbeddedObjectsL(myArray, EContentObject);

i = myArray.Count();  // Six content objects
myArray.ResetAndDestroy();

// Get the number of container objects in the current container
content->GetEmbeddedObjectsL(myArray, EContainerObject);

i = myArray.Count(); // One container object
myArray.ResetAndDestroy();
...

Opening Container 1.1 from Container 1

The same process can be followed again to see the contents of Container 1.1

...
// Get the array of container objects in the current container
content->GetEmbeddedObjectsL(myArray, EContainerObject);

// Find the Unique Id of the first container within Container 1
TPtrC UniqueId = myArray[0]->UniqueId();

// Open Container 1.1
content->OpenContainer(UniqueId);
myArray.ResetAndDestroy();

// Can now see two content objects (the MOV file and the TXT file)
content->GetEmbeddedObjectsL(myArray, EContentObject);
i = myArray.Count();
myArray.ResetAndDestroy();

// Zero container objects
content->GetEmbeddedObjectsL(myArray, EContentObject);
i = myArray.Count();
myArray.ResetAndDestroy();
...

Closing a Container

To look once more at the contents of the container that encloses the current container the ContentAccess::CContent::CloseContainer() function should be used.

Continuing our example, if we close the Container 1.1 we are left viewing Container 1 again.

...
// Close Container 1.1
Econtent->CloseContainer();

// Get the embedded content objects in the current container
content->GetEmbeddedObjectsL(myArray, EContentObject);
i = myArray.Count();  // Six content objects
myArray.ResetAndDestroy();

// Get the number of container objects in the current container
content->GetEmbeddedObjectsL(myArray, EContainerObject);
i = myArray.Count(); // One container object
myArray.ResetAndDestroy();
...

Searching for a MIME type within a file

If an application wants to find all the content with a particular MIME type within a file it should use ContentAccess::CContent::Search(). This function will produce a list of all content objects with the specified MIME type that are stored under the current container.

...
// Create an array for storing the result of the search
RStreamablePtrArray<CEmbeddedObject> myArray;
CleanupClosePushL(myArray);

// Get all MP3 files in Container 1
content->Search(myArray, _L("mpeg/audio"), EFalse);

// Do something with results
...

// Cleanup
CleanupStack::PopAndDestroy(1);
...

Reading data from a content object

The functions described earlier can be used to locate a particular content object within a file. ContentAccess::CContent::OpenContentL() can be used to read the content object. The UniqueId parameter can be used to identify a particular object within the file.

The call to ContentAccess::CContent::OpenContentL() will leave if the intent is not permitted. This could occur if the file is DRM protected but no rights are present.

If the file is DRM protected and the call to OpenContentL() succeeds, the rights are not consumed at this point. CAF just checks that it is possible to use the content.

// Open the content object specified by uniqueId with the EPlay Intent
CData* data = content->OpenContentL(EPlay, uniqueId);

If the application already knows the URI and unique Id of the content object it wants to read from, it can create a CData object directly.

CData* data = CData::NewL(TVirtualPathPtr(uri, uniqueId), EPlay, EContentShareReadOnly);

Once the CData object has been constructed, it allows the content object to be used as if it were a standalone unprotected file. The client must call ContentAccess::CData::ExecuteIntent() when the rights should be consumed. If the file is not DRM protected, the call will be ignored by the agent handling the file.

...
TBuf8 <256> buf;
data->ExecuteIntent(EPlay);
data->Seek(SomePosition,ESEEK_START);
data->Read(buf);
...

There are several overloaded versions of the ContentAccess::CData::Read() function. Only one is illustrated above for example purposes.

Content Object Notifications

The CContent interface supports notification requests for content objects within files. The events for which an application can request notification are given by the enumeration ContentAccess::TEventMask.

The following example requests and cancels notification for rights becoming available:

...
// Request notification when rights become available for a particular content object
content->NotifyStatusChange(ERightsAvailable, status, uniqueId);

// Cancel notification request
content->CancelNotifyStatusChange(status, uniqueId);
...

Handling Rights for DRM content

There are two functions available that give the application some control over the rights:

  • Request Rights

    ContentAccess::CContent::RequestRights() allows the application to ask the agent to undertake whatever steps are necessary to obtain rights for the given content object. Some agents may not support this mechanism, in which case they will return KErrCANotSupported.

    The request rights call includes an TRequestStatus parameter, which allows the application to be notified of the outcome of the rights request.
    ...
content->RequestRights(status, uniqueId);
...

  • Display Info

    ContentAccess::CContent::DisplayInfoL() allows the application to ask the agent to display the file and/or rights information for the given content object. The call returns when the display is dismissed.

    Some agents may not support this mechanism, in which case they will leave with KErrCANotSupported.

    ...
content->DisplayInfoL(EFileProperties, uniqueId);
...

Agent resolution during CContent object creation

  • During the creation of a CContent object an instance of the internal object CAgentResolver is created.
  • CAgentResolver uses ECOM to identifier all the Content Access Agents (CAAs) on the system. An instance of CAgentInfo is created for each CAA found. CAgentInfo contains supplier and consumer MIME types as well as the CAA plug-in details.
  • When a URI is supplied to CContent::NewL() and it contains a path for the private directory of one of the agent's then that CAA is used. For RFile no private directory exists so this check cannot be performed.
  • If a private directory cannot be obtained from the URI or an RFile was supplied to CContent::NewL() each CAA plug-in identified by CAgentResolver is loaded in turn.
  • CAgentResolver obtains a CAgentManager object from each CAA in turn and calls IsRecognized() allowing the agent implementation to determine if it can support the file.
  • If no CAA responds the default F32 CAA is used in to open the file as it is assumed to be unprotected content.
  • Note: The MIME types loaded into CAgentInfo are not used for Agent Resolution but are utilized in file type recognition under Application Architecture recognizer framework.
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Files containing multiple content objects

Files containing multiple content objects

An application can explore the content objects inside a file using the ContentAccess::CContent class.

  • Structure of a file containing multiple content objects
  • Identifying a content object within a File
  • Objects used to identify a content object within a File
  • Special Cases for the UniqueId field

Structure of a file containing multiple content objects

The Content Access Framework provides a generic mechanism for exploring files that contain multiple content objects. These files are often referred to as archive files. This could be anything from a .ZIP compression archive to a DRM protected archive such as an OMA .DCF file.

Inside an archive file, and in addition to the content objects, there will be meta-data or information associated with the content. This meta-data could include information such as the MIME type of the content, encryption algorithm, compressed size of the content etc.. This information can be retrieved from the attributes related to a content object, see Content Object Attributes.

The content and meta-data may also be arranged in a heirachy with container objects grouping content objects together. A typical archive could have a complex structure like the example shown below:

In this situation the file itself can be considered as the top level container. All other content, containers and meta-data are nested inside.

In an archive file applications can quickly search for the content objects they are interested in by using ContentAccess::CContent::Search().

Identifying a content object within a File

Archive files containing several content objects cannot be referred to using just the URI of the file. The Content Access Framework uses a concept of virtual paths to identify content objects within a file. The virtual path is a combination of the file URI and a unique identifier supplied by the agent:

  • URI - The location of the file
  • UniqueId - The content object inside the file.
A content file is only ever handled by the agent that recognises it. The unique identifier will never need to be decoded by anyone other that the agent that generated it, so the format is left for the agent to implement as it sees fit. For instance an OMA DRM agent may put the Content ID (CID) in the UniqueId field.

The only constraint is that the UniqueId must be unique within the file. An application must be able to directly reference a content object just using the UniqueId.

Objects used to identify a content object within a File

Virtual Path pointer objects on the Stack

The ContentAccess::TVirtualPathPtr is used to point to two descriptors holding the URI of a file and the UniqueId of a content object within the file. It can also be used to point to another TVirtualPathPtr. Since it is only a pointer, the original descriptors used to initalise the TVirtualPathPtr should not be destroyed or modified while the TVirtualPathPtr is still in use.

Virtual Path objects on the heap

The ContentAccess::CVirtualPath class stores the file URI and content object UniqueId in its own descriptors. There is a cast operator that allows the CVirtualPath to be used as if it were a TVirtualPathPtr.

Examples

// Open a CContent object to browse the objects inside a file
CContent *c = CContent::NewL(_L("C:\file.dcf"));
CleanupStack::PushL(c);

// Create an array to store the embedded objects
RStreamablePtrArray<CEmbeddedObject> myArray;
CleanupClosePushL(myArray);

// Get an array of the embedded objects within the current container in the file
c->GetEmbeddedObjectsL(myArray);

// If necessary we can get a "mangled" version of the URI that
// references the particular object within the file
// ie. "C:\file.dcf\\OBJECT1"
TPtrC aURI = *myArray[0];

.
.
.

// Now we can use our TPtrC later to create a TVirtualPath object from a URI
TVirtualPathPtr aPtr = aURI;

// print the file URI  "C:\file.dcf"
printf(aPtr.URI());

// print the content object's UniqueId "OBJECT1"
printf(aPtr.UniqueId());

// Create a copy of aVirtualPath on the heap so we don't have any ownership problems
CVirtualPath *myVirtualpath = CVirtualPath::NewL(aPtr);

// Can now delete the CContent object without loosing our VirtualPath
CleanupStack::PopAndDestroy(2); // c, myArray

Special Cases for the UniqueId field

KNullDesC16() - ""

A zero length UniqueId is used to refer to the entire file. If a file is opened this way no translation of the contents will be performed. The ability to open the file with no translation is required for example to attach the file to an outgoing message. As with any other function in CAF access to the file is at the agents discretion.

KDefaultContentObject() - "DEFAULT"

Allows an application to refer to the default content object within a file. In the case of an unprotected file handled by the F32Agent this will be the entire file, the same as if the UniqueId "" was used. Other agents, particularly those with a single content object embedded within the file, use "DEFAULT" to refer to their only content object.

Even though the DEFAULT content object is supported, it is recommended that agents always use CContent to enumerate the objects within the file.

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Content Object Attributes

Content Object Attributes

As shown in the Consumer API, a file may consist of many content and container objects.

Each of these objects may have properties or attributes associated with it. This section outlines how applications can retrieve these using the CAF API.

  • Generic Attributes
  • Generic String attributes
  • Agent specific meta-data

Generic Attributes

Different agents may use different terms to describe the same concept. Generic attributes provide a way for applications to query standardised information about a content object.

These standardised attributes are given by the enumeration ContentAccess::TAttribute. It is possible for agents to extend this set of attributes, starting from EAgentSpecificAttributeBase.

The attribute functions are implemented in ContentAccess::CContent, ContentAccess::CData and ContentAccess::CManager.

Retrieving a Single Attribute

The attributes of one content object in a file may not necessarily be the same as the attributes of other content objects within the same file. Attributes relate to a single content object within a file.

It is possible that the attribute may not make sense for a particular content object. In that case the agent will return an error KErrCANotSupported. If an attempt is made to retrieve the attributes of a content object that does not exist the agent will return KErrNotFound.

The following code fragment illustrates how to retrieve an attribute for a particular object within a content file.

...
CContent* content = CContent::NewL(uri);

// check if DRM rights are pending for the object specified by uniqueId
TInt attributeValue;
TInt err = content->GetAttribute(ERightsPending, attributeValue, uniqueId);

if(err == KErrNone)
        {
        // Check the value of the attribute
        if(attributeValue == ETrue)
                {
                // Rights are pending, display waiting for rights countdown
                }
        else if(attributeValue == EFalse)
                {
                // Rights are not pending
                }
        }
else if(err == KErrCANotSupported)
        {
        // This attribute does not apply to this content object
        }
else if(err == KErrNotFound)
        {
        // Cannot find the object specified by the given uniqueId
        }
else if (err != KErrPermissionDenied)
        {
        // Unknown error
        User::Leave(err);
        }

Retrieving Several Attributes

For some agent implementations it may be more efficient to retrieve all the attributes for a content object in one function call. The ContentAccess::RAttributeSet object is used here to provide a way to request and store several attributes.

Querying two attributes using the CManager API would look like the following:

// Agent manager
CManager *manager = CManager::NewLC();

// Prepare the attributes to query using the CAttributeSet object
RAttributeSet attributeSet;
CleanupClosePushL(attributeSet);
attributeSet.AddL(EProtected);
attributeSet.AddL(ECanView);

// Retrieve the attribute values from the agent
User::LeaveIfError(manager->GetAttributeSet(attributeSet, virtualPath));

// Check if the content object is protected
TInt attributeValue;
TInt err = attributeSet.GetValue(EProtected, attributeValue);
if(err == KErrNone && attributeValue)
        {
        // content object is DRM protected
        }

// Check if the content object can be display on screen
TInt err = attributeSet.GetValue(ECanView, attributeValue);
if(err == KErrNone && attributeValue)
        {
        // content object has rights that allow it to be displayed on screen
        }

// Finished
CleanupStack::PopAndDestroy(2);         // manager, attributeSet

Generic String attributes

String attributes are similar to the attributes described above except the value associated with the attribute is a string. A good example of where a string attribute is required is the MIME type of a content object within a file.

The string attributes are standardised by the ContentAccess::TStringAttribute enumeration. This allows applications to request information such as the MIME type in a generic way for all agents.

Agents can extend this mechanism to provide agent specific attributes starting at EAgentSpecificStringAttributeBase.

The following example finds the author of a content object.

CContent* content = CContent::NewL(uri);

// define a buffer to store the attribute value string
TBuf <100> buf;

// retrieve the attribute
err = content->GetAttribute(EAuthor, authorBuffer, uniqueId);

// Display the authors name on screen
if (err == KErrNone)
        DisplayAuthor(buf);

If the Agent does not support this attribute, it will return KErrCANotSupported.

Retrieving Several String Attributes

For some agent implementations it may be more efficient to retrieve several string attributes for a content object in one function call. The ContentAccess::RStringAttributeSet object is used here to provide a way to request and store several attributes.

Querying three attributes using the CManager API would look like the following:

CManager *manager = CManager::NewLC();

// Prepare the attributes to query using the CAttributeSet object
RStringAttributeSet stringAttributeSet;
CleanupClosePushL(stringAttributeSet);
stringAttributeSet.AddL(ETitle);
stringAttributeSet.AddL(EAuthor);
stringAttributeSet.AddL(EDescription);

// Retrieve the attribute values from the agent
User::LeaveIfError(manager->GetStringAttributeSet(stringAttributeSet, virtualPath));

// Display the values
TBuf <256> value;
TInt err = stringAttributeSet.GetValue(ETitle, value);
if(err == KErrNone)
        {
        Printf("Title       : %s", value);
        }
err = stringAttributeSet.GetValue(EAuthor, value);
if(err == KErrNone)
        {
        Printf("Author      : %s", value);
        }
err = stringAttributeSet.GetValue(EDescription, value);
if(err == KErrNone)
        {
        Printf("Description : %s", value);
        }

// Finished
CleanupStack::PopAndDestroy(2);         // manager, stringAttributeSet

Agent specific meta-data

Some agents may expose meta data so they can be read using a CData object. The format of these meta-data objects is not specified by the Content Access Framework but could be useful for applications familiar with the agent to read meta data this way.

CData objects for agent specific meta-data can be opened in the same way content objects are opened using the ContentAccess::CContent::OpenContentL() function.

CContent* content = CContent::NewLC(uri);

// Create an array to store the embedded objects
RStreamablePtrArray<CEmbeddedObject> myArray;
CleanupClosePushL(myArray);

// Get the embedded "Agent Specific" objects in the current container
content->GetEmbeddedObjectsL(myArray, EAgentSpecificObject);

// Get the unique Id of the first meta-data object
TPtrC aUniqueId = myArray[0]->UniqueId();

// create a CData object to read the meta data
CData *myMetaData = content->OpenContentLC(EPeek, aUniqueId);

// Do something with the data
...

// Finished
CleanupStack::PopAndDestroy(3);         // content, myArray, myMetaData

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Importing files into the Content Access Framework

Importing files into the Content Access Framework

  • Supplier API
  • Starting a new import session
  • Preparing to import the file
  • Transferring the file to the Content Access Agent
  • Completing the Import
  • Output files produced

NOTE: For the purpose of clarity we have ommitted full error checking in the code examples given below. For examples with error checking see Importing a content file, application provides output files.

Supplier API

The Supplier API allows agents to publicise the MIME types they are interested in. When those files arrive on the device, message handling applications can check these MIME types and import the file into CAF. The agent transforms the file into a different format for use within the device.

In most cases this won't be necessary, since the files will arrive in the same format that they will be used in. However, some agents require the device to protect (encrypt) the content at the moment it arrives; the Supplier API fulfills that role.

The classes used in the supply operation are:

ContentAccess::CSupplier and instances of ContentAccess::CImportFile.

Starting a new import session

The ContentAccess::CSupplier is designed to allow several unrelated files to be imported into CAF. It uses its ContentAccess::CAgentResolver member to determine which CA agent should be used to import each file. The CAgentResolver builds a list of all agents when it is created and updates the list if new agents are installed.

A typical import session will start with the creation of a CSupplier, e.g.,

//Create Supplier
CSupplier *mySupplier = CSupplier::NewL();

Most applications will have a preference for the directory where output files are to be stored. Usually the first thing to do with the new CSupplier instance is to set the output path.

//Set output path for DRM protected content
_LIT(KPath,"C:\myOutputFiles");
mySupplier->SetOutputDirectoryL(KPath());

It is not necessary to set the output path if the application provides output file handles to the agent.

Preparing to import the file

Check that the MIME type is supported

Before importing a file into the content access framework, an application should check that the MIME type of the file is supported. Each agent publishes a list of the MIME types it supports. The list is configured in the agent's resource file and can be checked using ContentAccess::CSupplier::IsImportSupported()

if(!mySupplier->IsImportSupported(myMimeType))
        {
        return;
        }

Create a CMetaDataList object

The CMetaDataList object is used to store any information associated with the import file that may be useful for the agent. These values will be passed to the agent.

For example OMA DRM 1.0 files sometimes arrive with the HTTP header X-Oma-Drm-Separate-Delivery. This informs the agent how long before rights are expected for the content. If the rights were expected in 12 seconds it would be something like the following:

// Create meta-data array
CMetaDataArray *metaDataArray = new (ELeave) CMetaDataArray();
CleanupStack::PushL(metaDataArray);

// Add any useful information we can think of....
metaDataArray->AddL(_L("Content Type"), _L("application/vnd.oma.drm.dm"));
metaDataArray->AddL(_L("X-Oma-Drm-Separate-Delivery"), _L("12"));
...

Creating the CImportFile object

The file is 'written' to CAF using a ContentAccess::CImportFile object. ContentAccess::CSupplier::ImportFile() creates an CImportFile object for importing a file.

The parameters supplied indicate whether the agent will create the output files or whether the application using CAF will generate output files for the agent on demand.

// Create the import object, passing in the metaDataArray created earlier
// The application will supply the output files
CImportFile *import = mySupplier->ImportFileL(sourceMimeType, *metaDataArray);

The application should now transfer the file to CAF using the CImportFile object. Only one file can be transferred by each instance although several output files may be produced. Applications should create new CImportFile objects in order to import more files.

Agents Generating the Output files

If the application wants the agent to generate the output files, it should supply a suggested file name in the call to CSupplier::ImportFile(). Even if this parameter is a zero length descriptor, it still indicates that the agent is responsible for generating output files.

Agents will create the output files in a directory nominated by the application when it called CSupplier::SetOutputDirectoryL() or they may decide to store the output files in their private directory.

Applications should check at the end of the import to find out how many output files were created and where they are stored.

Application generating the Output files

If no suggested file name is passed to the agent, the application will provide output files for the agent to use. This mechanism allows applications to open files in their own private directory and ask the CAF agent to store the output in those files.

The way it works is the same as an any other import operation, the difference is that the call to CImportFile::WriteData() or CImportFile::WriteComplete() may return an error code of KErrCANewFileHandleRequired.

This error code indicates that the agent needs a new output file handle in order to continue. The application should open a new output file with write access and call CImportFile::ContinueWithNewOutputFile() to supply the new handle to the agent. It is possible that further handles may be needed, if so CImportFile::ContinueWithNewOutputFile() will return KErrCANewFileHandleRequired and the application should repeat the procedure with another file.

The agent must cache its state before returning KErrCANewFileHandleRequired. The application MUST NOT resend the same WriteData() or WriteComplete() command.

At the end of the import operation the output files will still be listed regardless of whether they were supplied by the application or the agent.

Transferring the file to the Content Access Agent

ContentAccess::CImportFile is the class used to write the file data to CAF. It is created by ContentAccess::CSupplier and can only be used to import a single file.

An application should call WriteData() to transfer a field in 'chunks' to the Content Access Framework. Usually this would be something like the following:

...
TFileName fileName;
TBuf8<128> data;
TInt err = KErrNone;

// start importing content
while( (source still has data) && (err==KErrNone) )
        {
        source.read(data);
        err = import->WriteData(data);
        // need to supply new file to import to ?
        while (err == KErrCANewFileHandleRequired)
                {
            // supply new file in order to continue writing
                RFile newFile;
                import->GetSuggestedOutputFileName(fileName);
                newFile.Open(fileName, EFileWrite);
                err = import->ContinueWithNewOutputFile(newFile, fileName);
                newFile.Close();
                }
        }
...

Completing the Import

When all the data is written, the application should call ContentAccess::CImportFile::WriteComplete(), this will let the agent know that all the data has been transferred and allow it to perform any final processing.

...
err = import->WriteComplete();

// When application supplies file handles it must always check to see if
// the agent needs a new file handle
while(err == KErrCANewFileHandleRequired)
        {
        RFile newFile;
        import->GetSuggestedOutputFileName(fileName);
        newFile.Open(fileName, EFileWrite);
        err = import->ContinueWithNewOutputFile(newFile, filename);
        // It is possible that the agent needs yet another file handle
        newFile.Close();   // agent makes a copy so we don't need to keep our file handle
        }
...

At this stage all the agent's work is done, the CImportFile object can be deleted.

Output files produced

When the import is finished the application may wish to check if any output files have been produced. The list of output files is accessed using ContentAccess::CImportFile::OutputFileL().

...
// loop over all the output files produced
for(TInt i =0; i < import->OutputFileCountL(); i++)
        {
        // Can now retrieve filename, type of file (receipt or content) and
        // MIME type for the file produced
        TPtr filename = import->OutputFileL(i).FileName();
        TOutputType type = import->OutputFileL(i).OutputType();
        TPtr8 mimetype = import->OutputFileL(i).MimeType();
        }
...

The output files can be either content files or receipts for DRM rights. It is possible that no output files will be generated and the file will be "absorbed" into the agent.

Also, it is important to remember that the MIME type and most likely the file extension of the output files are almost certainly different to the MIME type and file extension of the imported file.

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Managing files with the Content Access Framework

Managing files with the Content Access Framework

Files are managed by the ContentAccess::CManager class in the content access framework.

  • Agents using Private directories
  • Deleting a File
  • Copying a file
  • Move or Rename a file
  • Creating a Directory
  • Creating all directories
  • Removing a Directory
  • List the contents of a directory
  • Find out the real MIME type of the file
  • Get the attributes of the Content object

Agents using Private directories

Some agents may choose to store content files inside their server private directories. For example:

\private\<process SID>\protectedfile.ext

If an agent wishes to publish the existence of its private directory, it should fill in the name of the private directory (its SecureID of the process) in the opaque_data section of the agents ECOM resource file. See Content Access Agent ECOM Resource File.

CAF will map the path to one based on the agent name so that it's human-readable. For example:

\private\<agent_name>\protectedfile.ext

Deleting a File

The ContentAccess::CManager::DeleteFileL() allows a client to delete a specified file managed by a DRM agent.

The agent responsible for the content can display a dialog to confirm that the user wants to delete the file. This is particularly important if the content still has valid rights.

The agent implementation must decide whether to delete the rights or only the content.

TFileName filename;

// create a manager object
CManager* manager = CManager::NewL();

// Use the manager to delete a file
// CAF will ask the agent who actually owns the file to delete it.
TInt result = manager->DeleteFile(filename);

Copying a file

ContentAccess::CManager::CopyFile() allows a user to make a copy of the file. For example, the user may wish to make a copy of the file on removable media. When copying content managed by a DRM agent, the agent will only copy the content, it will not copy the rights.

TInt result = manager->CopyFile(source, destination);

Move or Rename a file

ContentAccess::CManager::RenameFile() allows a user to move or rename a file. For example, the user may wish to move the file to removable media.

TInt result = manager->RenameFile(oldFilename, newFilename);

Creating a Directory

ContentAccess::CManager::MkDir() allows a user to create a directory.

TInt result = manager->MkDir(fullpath);

Creating all directories

ContentAccess::CManager::MkDirAll() allows a user to create a directory. If one or more of the sub-directories do not exist they will be created too.

TInt result = manager->MkDirAll(fullpath);

Removing a Directory

ContentAccess::CManager::RmDir() allows a user to remove a directory.

TInt result = manager->RmDir(fullpath);

List the contents of a directory

There a three variations of the ContentAccess::CManager::GetDir() function. They each allow a client to list the contents of an agent's private directory.

As mentioned earlier it is optional for agents to provide this information.

CDir *aDir;

TInt result = manager->GetDir(aName, aEntryAttMask, aEntrySortKey, aDir);

Find out the real MIME type of the file

The CAF Apparc recognizer provides a MIME type that is a combination of the file MIME type and the content within the file. In some circumstances, such as forwarding DRM content to another device, it will be important to make sure the content is sent with the correct MIME type.

Using the "" empty string UniqueId allows an application to determine the MIME type of the file.

TBuf <256> aMimeType;

TInt result = manager->GetStringAttribute(EMimeType, aMimeType, TVirtualPathPtr(aURI,KNullDesC16()));

Get the attributes of the Content object

The CManager API allows applications to retrieve attributes or string attributes from a content object as described in Content Object Attributes.

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Managing CAF Agents

Managing CAF Agents

There are some operations performed on agents that do not relate directly to a particular content file. The ContentAccess::CManager interface includes some functions that allow an application to work with a particular agent.

  • Listing the CAF Agents
  • Displaying the Agent Management Information
  • Create a DRM rights management object
  • Agent Specific Commands

Listing the CAF Agents

Before working with one particular agent, the client will need to find out which agents are installed on the device. The ContentAccess::CManager::ListAgentsL() function provides this list of agents. The F32Agent is not included in the list, since it does not support any management functions.

The ContentAccess::CAgent objects in the list can be used to refer to the particular agent in subsequent function calls.

// Create a CManager object
CManager* manager = CManager::NewL();

RPointerArray <CAgent> theAgents;

// Get the list of agents
manager->ListAgents(theAgents);

// Check there is at least one agent
if(theAgents.Count() > 0)
        {
        // Find the first agent
        CAgent& agent = theAgents[0];
        }

Displaying the Agent Management Information

The management API allows applications to request that an agent display management information on the screen. The agent could present configuration settings, status or DRM rights information. Each agent will have unique settings so it is not possible to display one dialog to configure all agents.

// Create a CManager object
CManager* manager = CManager::NewL();

RPointerArray <CAgent> theAgents;

// Get the list of agents
manager->ListAgents(theAgents);

// Check there is at least one agent
if(theAgents.Count() > 0)
        {
        CAgent& agent = (*theAgents)[0];

        // Display the management information for the first agent
        manager->DisplayManagementInfoL(agent);
        }

It is possible that some agents will not support this capability and will leave with KErrCANotSupported.

Displaying DRM rights information is only relevant for agents implementing a DRM scheme. It is expected that an Agent implementing DRM will provide some or all of the following functionality in the dialog:

  • Display all rights objects including state (pending, valid, expired, orphaned, etc.)
  • Display detailed information on a particular rights object (play count, validity period, the related Content object(s))
  • Allow unwanted, expired or orphaned rights to be deleted.

Create a DRM rights management object

The rights management object is only relevant for agents implementing a DRM scheme. Other agents will leave with KErrCANotSupported.

An application can ask a particular DRM agent to create a ContentAccess::CRightsManager object that can be used to provide generic access to DRM rights within that agent. Since it is a generic interface used by all agents, it will not be able to present all the detailed information available.

CRightsManager* rightsmanager;

// Create a CManager object
CManager* manager = CManager::NewL();

...

// create the rights manager object for a particular agent
rightsManager = manager->CreateRightsManagerL(agent);

To manage the rights in a more comprehensive manner the application should use the ContentAccess::CManager::DisplayManagementInfoL() function, where the agent can present its own comprehensive information.

Agent Specific Commands

This is an extension mechanism to allow a client to perform an agent-specific function. The application will need to know the extended commands that the agent supports and the format of the input and output buffers used in the command. All of this is specified by the CAF agent, not the Content Access Framework.

The buffers allow agent specific objects to be externalized by an application, passed through CAF and internalized by the agent. The same principle applies for data returned from the agent to the application.

TInt FancyApplicationFunctionL(CManager& aManager, CAgent& aAgent, CFancyAgentInputObject& aInputObject, CFancyAgentOutputObject& aOutputObject);
        {
        // Dynamic buffer to serialize aInputObject
        CBufFlat* inputBuffer = CBufFlat::NewL(50);
        CleanupStack::PushL(inputBuffer);

        // write aInputObject to the dynamic buffer
        RBufWriteStream streamIn(*inputBuffer);
        CleanupClosePushL(streamIn);
        aInputObject.ExternalizeL(streamIn);
        CleanupStack::PopAndDestroy(&streamIn);

        // Call the agent specific function #42
        TBuf <1000> outputBuffer;
        User::LeaveIfError(aManager.AgentSpecificCommand(aAgent, 42 ,inputBuffer->Ptr(0), outputBuffer));

        // Don't need the input buffer any longer
        CleanupStack::PopAndDestroy(inputBuffer);

        // Create a stream object to read the output buffer
        RDesReadStream streamOut(outputBuffer);
        CleanupClosePushL(streamOut);
        aOutputObject.InternalizeL(streamOut);
        CleanupStack::PopAndDestroy(&streamOut);
        }

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Rights Manager API

Rights Manager API

  • Rights manager API
  • Create a DRM rights management object
  • Listing all Rights objects
  • List the rights associated with a content file
  • List the rights associated with a content object
  • List the content associated with a Rights object
  • Retrieving a Rights Object
  • Deleting a Rights Object

Rights manager API

The Rights manager API gives simple access to the rights within a CAF agent implementing a DRM scheme. The rights are represented in a generic form using the ContentAccess::CRightsInfo class. This simple class just holds a text description of the rights and some simple properties assocaiated with those rights.

The Rights manager also allows applications to determine which content files are assocated with each Rights object and vice versa.

Create a DRM rights management object

The ContentAccess::CRightsManager object is created by the ContentAccess::CManager object to look at the rights stored by a particular content access agent.

// create the CManager object
CManager* manager = CManager::NewL();

//Create RPointerArray to store pointers to the agents
RPointerArray <CAgent> agentArray;

// Get the list of agents
manager->ListAgentsL(agentArray);

// Create a CRightsManager for the first agent
CRightsManager *rightsManager = manager->CreateRightsManagerL(agentArray[0]);

Listing all Rights objects

The ContentAccess::CRightsManager::ListAllRightsL() function produces a list of all the rights stored in the given a DRM agent.

// Create the array to store Rights objects
RStreamablePtrArray<CRightsInfo> myArray;
CleanupClosePushL(myArray);

// Get the Rights objects from the agent
rightsManager->ListAllRightsL(myArray);

// count the number of Rights objects
TInt numRights = myArray.Count();

// clear the contents of the array
CleanupStack::PopAndDestroy();

List the rights associated with a content file

The ContentAccess::CRightsManager::ListRightsL() function produces a list of all the rights stored in the given a DRM agent that are associated with the file at a given URI.

// Create the array to store Rights objects
RStreamablePtrArray<CRightsInfo> myArray;
CleanupClosePushL(myArray);

// Get the Rights objects assocated with the content
rightsManager->ListRightsL(myArray, uri);

// Count the number of Rights objects associated with the content
TInt numRights = myArray.Count();

// clear the contents of the array
CleanupStack::PopAndDestroy();

List the rights associated with a content object

The ContentAccess::CRightsManager::ListRightsL() function produces a list of all the rights stored in the given a DRM agent that are associated with the content object at a given virtual path

// Create the array to store Rights objects
RStreamablePtrArray<CRightsInfo> myArray;
CleanupClosePushL(myArray);

// Get the Rights objects assocated with the content
rightsManager->ListRightsL(myArray, virtualPath);

// Count the number of Rights objects associated with the content
TInt numRights = myArray.Count();

// clear the contents of the array
CleanupStack::PopAndDestroy();

List the content associated with a Rights object

The ContentAccess::CRightsManager::ListContentL() function produces a list of all the content that is associated with the given Rights object.

// Create the array to store Rights objects
RStreamablePtrArray<CRightsInfo> rightsArray;
CleanupClosePushL(rightsArray);

rightsManager->ListAllRightsL(rightsArray);

// get the first CRightsInfo object
CRightsInfo* rightsObject = rightsArray[0];

RStreamablePtrArray<CVirtualPath> contentArray;
CleanupClosePushL(contentArray);

// Get the array of content objects associated with the rights
rightsManager->ListContentL(contentArray, rightsObject);

// count the number of content objects
TInt numContentObjects = contentArray.Count();

// produce listing
...

// Finished
CleanupStack::PopAndDestroy(2);         // rightsArray, contentArray

Retrieving a Rights Object

The ContentAccess::CRightsManager::GetRightsDataL() function allows an application to retrieve a pointer to a Rights object. The Rights object is derived from MAgentRightsBase.

// Retrieve the full Rights object
// The application will need to cast it to the agent's derived Rights class before using it.
MAgentRightsBase* rightsObject = rightsManager->GetRightsDataL(rightsObject);

Deleting a Rights Object

The ContentAccess::CRightsManager::DeleteRightsObject() function allows an application to delete rights stored by the agent.

// Delete the Rights object
TInt result = rightsManager->DeleteRightsObject(rightsObject);

It is also possible to delete all the rights associated with a particular content object.

// Delete all the Rights objects associated with the given content object
TInt result = rightsManager->DeleteAllRights(virtualPath);

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Handling data corruption

Handling data corruption

  • Content data corruption
  • Rights data corruption

Content data corruption

When supplying or consuming content it is possible that the content data has been corrupted. This may be due to various reasons including file or disk corruption, transmission errors, etc.

If an agent detects corruption in a content object it will end the current DRM operation and the KErrCACorruptContent or KErrCorrupt error code will be sent back to the API clients, depending on the type of corruption detected and how the client chooses to handle it. It is recommended that clients be designed to handle such an error if received, as it can usually be considered a fatal error.

An example of using this error code when importing content:

CSupplier* supplier = CSupplier::NewLC();
CImportFile* import = supplier->ImportFile( /*pass in specific MIME type and metadata*/ );
TFileName fileName;
TBuf8<128> data;
TInt err = KErrNone;

// start importing content
while( (source still has data) && (err==KErrNone) )
        {
        source.read(data);
        err = import->WriteData(data);
        // need to supply new file to import to ?
        while (err == KErrCANewFileHandleRequired)
                {
            // supply new file in order to continue writing
                RFile newFile;
                import->GetSuggestedOutputFileName(fileName);
                newFile.Open(fileName, EFileWrite);
                err = import->ContinueWithNewOutputFile(newFile, fileName);
                newFile.Close();
                }
        }

if (err != KErrNone)
        {
        if (err == KErrCACorruptContent)
                {
                //Agent may have performed some error handling.
                //Client may need to perform some client specific operations (e.g.cleanup).
                }
        else if (err == KErrCorrupt)
                {
                DisplayErrorMsg('Unable to import content because it is corrupt!');
                }
        else if (err == ...)
        ...
        }
...

Rights data corruption

When consuming content or when obtaining rights object information it is possible that the rights object data has been corrupted. This may be due to various reasons including file or disk corruption, transmission errors, etc.

If an agent detects corruption in a Rights object it will end the current DRM operation and the KErrCACorruptRights or KErrCorrupt error code will be sent back to API clients,depending on the type of corruption detected and how the client chooses to handle it. It is recommended that clients be designed to handle such an error if received, as it can usually be considered a fatal error.

An example of using this error code when accessing content:

...
// Create a CContent object
CContent *content = ...

// Create a CData object to read the content
CData* data;
TRAP(err, data = content->OpenContentLC(EDisplay));

if (err != KErrNone)
        {
        if (err == KErrCACorruptRights)
                {
                //Agent may have performed some error handling.
                //Client may need to perform some client specific operations(e.g. cleanup).
                }
        else if (err == KErrCorrupt)
                {
                DisplayErrorMsg('Unable to decode rights because it is corrupt!');
                }
        else if (err == ...)
        ...
        }
...

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: CAF and the User Interface

CAF and the User Interface

  • Uikon Environment
  • Applications asking the agent to display information
  • Error Handling
  • Confirmation Dialogs
  • F32 Agent UI

Uikon Environment

It should be assumed that it is only possible for CAF agents to display dialogs on screen if the CAF function is called from a thread where a static Uikon environment exists.

Applications asking the agent to display information

CAF provides several APIs that allow a client application to request an agent to display information on the screen. Some agents may not support these calls and leave with KErrCANotSupported.

Both the ContentAccess::CContent::DisplayInfoL() function and the ContentAccess::CManager::DisplayInfoL() function allow the application to display file information such as last modification date and/or DRM rights information

...
CManager *manager = CManager::NewL();
manager->DisplayInfoL(EFileProperties, avirtualPath);
...

Applications can also ask a particular agent to go into management mode, displaying configuration information on screen, allowing the user to view and set agent specific information.

...
// create manager
CManager *manager = CManager::NewL();

// Get a list of the agents
RPointerArray <CAgent> theAgents;
manager->ListAgentsL(theAgents);

// Display management info for the first agent
manager->DisplayManagementInfoL(*theAgents[0]);
...

Error Handling

The agents will display errors on screen when they occur. Once the error has been acknowledged by the user the agent will return the error code to the client application.

If a client application does not want errors displayed on screen, it can request to disable the agent UI using the SetProperty() functions, e.g. ContentAccess::CContent::SetProperty(). The agent may ignore this request and still present dialogs on screen.

...
CContent *content = CContent::NewL(URI);

// Disable UI
content->SetProperty(EAgentPropertyAgentUI , 0);

// Open CData
CData *data = content->OpenContentL(EPlay, uniqueId);
...

Confirmation Dialogs

Some agents may present confirmation dialogs to the user before allowing them to perform certain operations. A good example would be when an application tries to delete a DRM protected file. The user may have been purchased the content and may have inadvertently pressed delete. The agent can present a dialog asking "are you sure?"

The agent can then return the outcome of the delete to the application, i.e. KErrCancel, if the user presses cancel.

The application can use the same SetProperty() as above to disable these dialogs, but some agents may ignore that request and display the dialogs regardless.

F32 Agent UI

The default implementation of the F32AgentUI.DLL does not do anything. If licensees want the F32Agent to display information on the screen they should replace the existing F32AgentUI.DLL with one that does support display functions.
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: How to write an Apparc recognizer for the Content Access Framework

How to write an Apparc recognizer for the Content Access Framework

  • Overview
  • How to determine the file and content MIME types of a DRM file
  • CAF Recognizer Configuration File
  • Application Registration files

Overview

The Apparc framework uses data type recognizers derived from CApaDataRecognizerType to determine the MIME type of files in Symbian OS. Apparc supplies the filename and a buffer containing bytes read from the start of the file. If a file is recognized, the recognizer must return the MIME type and the degree of confidence in recognizing the file (a TInt ranging from "KMinInt=Not Recognized" to "KMaxInt=Certain").

The implementation of DRM presents a problem when determinining the MIME type. Usually, a DRM file stores one or more content objects. For example, an OMA file with MIME type application/vnd.oma.drm.content might store an image file with MIME type image/jpeg. Apparc expects only one MIME type to be returned, not two.

The CAF recognizer RECCAF.DLL uses the ContentAccess::CAgentResolver::DoRecognize() function (see below) to determine whether or not a file is recognized by the content access framework and if so retrieves these two MIME types.

The mapping of these two MIME types returned by CAF to a single MIME type follows these rules:

File MIME Type | Content MIME Type | Apparc MIME Type
Present | Present | x-caf-ContentMimeType
Present | Not Present | FileMimeType
Present | application/x-caf | application/x-caf

The rationale for the above mapping is as follows:

  • Users and applications will be interested in the MIME type of the content within a file not the packaging. CAF abstracts the packaging.
  • If the content is recognized with only the MIME type of the content within the file, it would confuse legacy applications who thought the entire file was that MIME type
  • Prefixing the content type with "x-caf-" shows it is a file that can be opened by CAF to read that content type without confusing legacy applications
  • A file that needs to be passed through the supplier interface before it can be used will just be recognized as the file MIME type, the content type is irrelevant before the supply operation.
  • A file containing many content objects should just be recognized as application/x-caf since the packaging of the archive is irrelevant. CAF abstracts the packaging.
Note:
The concept of "confidence" has also been eliminated for the files within the Content Access Framework. A file is either recognized by an agent or it is not recognized.

How to determine the file and content MIME types of a DRM file

When recognizing a file, Apparc supplies the name of the file to be recognized, and a buffer containing the start of the file, to all CApaDataRecognizerType::DoRecognizeL() implementations. These two parameters can be passed to the ContentAccess::CAgentResolver::DoRecognize() function to determine whether one of the Content Access Agents recognizes the file.

CApaDataRecognizer::DoRecognize(TDesC& aFilename, TDesC8& aBuffer)
        {

        TBool recognized;
        CAgentResolver *resolver = CAgentResolver::NewL();

        ....

        recognized = resolver->DoRecognize(filename, buffer, fileMimeType, contentMimeType);
        ....

ContentAccess::CAgentResolver::DoRecognize() passes the filename and buffer to each of the agents in turn. The agents perform the recognition, and the result is returned as either ETrue if the file was recognized, or EFalse if it was not. If the file is recognized, the fileMimeType and contentMimeType parameters are populated with the correct MIME types.

The recognition is distributed to the agents because they are able to recognize a file belonging to their agent. They are also able to examine the contents to work out the content MIME type. This allows one generic CAF recognizer to be used for all the agents implemented with the content access framework.

The following diagram illustrates the recognition of an OMA file with JPEG content.

CAF Recognizer Configuration File

The CAF recognizer configuration file is stored in the Apparc server's private directory \private\10003a3f\RecCaf\RecCafMimeTypes.txt.

It is just a list of all known content MIME types. The list allows the recognizer to return a fixed set of MIME types when Apparc calls the recognizer's CApaCafRecognizer::SupportedDataTypeL() fuction.

image/jpeg
image/gif
text/plain
text/html
... etc

If this file is replaced (to support new content types), the recognizer will only implement the changes during the next power on. Similarly if a new agent is added, the recognizer will only rebuild its list of agents after the next power on.

Application Registration files

In order to use CAF content, applications will need to update their registration resource files (e.g. AppName_reg.rss) to include the new CAF MIME types. For example, in the past an image viewer may have only included image/jpeg in the list of MIME types it could open. If the application is updated to use the Content Access Framework, it should support image/jpeg and x-caf-image/jpeg in order to support unprotected and protected content respectively. See the registration file examples below.

All file operations should be conducted through the CAF framework, so that the application will not need to know anything about a specific DRM scheme.

Registration file that doesn't use CAF

...

        datatype_list =
                {
                DATATYPE { priority= EDataTypePriorityHigh ; type="image/jpeg"; },
                }

...

Registration file that does use CAF

...

        datatype_list =
                {
                DATATYPE { priority= EDataTypePriorityHigh ; type="image/jpeg"; },
                DATATYPE { priority= EDataTypePriorityHigh ; type="x-caf-image/jpeg"; },
                }

...

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Content Access Agent ECOM Resource File

Content Access Agent ECOM Resource File

  • default_data
  • opaque_data
  • An Example Agent Resource File
  • Important UIDs for CA Agents

default_data

The default_data section of an CA Agent or CA Agent proxy's resource file is used to specify three pieces of information:

  • The buffer size required by this agent to recognize a file when ContentAccess::CAgentManager::RecognizeFileL() is called
  • A list of supplier MIME types supported by this agent
  • A list of consumer MIME types supported by this agent.
The buffer size section is separated from the supplier MIME types by a '|' character and the supplier MIME types are separated from the consumer MIME types by a ':' character.

Below is an example for an OMA DRM agent.

default_data="100|application/vnd.oma.drm.message,application/vnd.oma.drm.rights+xml:application/vnd.oma.drm.content";

  • It requires at least the first 100 bytes of a file in order to do recognition
  • It supports a supplier MIME types of application/vnd.oma.drm.message and application/vnd.oma.drm.rights+xml
  • It supports a consumer MIME type of application/vnd.oma.drm.content.

opaque_data

The opaque_data section is used to specify the agent's private directory under c:\private\. This will be the SID (SecureId) of the server who owns the directory, e.g.

opaque_data="12345678";

If the agent does not have a corresponding private directory or does not wish to provide access to that directory, it should just leave the opaque_data section as an empty string.

An Example Agent Resource File

// 101FE8F1.rss

// UIDs quick-ref
//
// ECOM DLL UID:                0x101FE8F1
// CA Agent interface UID:      0x10204740
// Test CAA Implementation:     0x101FE8F2

#include "RegistryInfo.rh"
RESOURCE REGISTRY_INFO theInfo
{
        dll_uid = 0x101FE8F1;
        interfaces =
        {
                INTERFACE_INFO
                {
                interface_uid = 0x10204740;
                implementations =
                        {
                        IMPLEMENTATION_INFO
                                {
                                implementation_uid = 0x101FE8F2;
                                version_no = 1;
                                display_name = "Test Agent";
                                default_data = "255|application/vnd.oma.drm.message,application/vnd.oma.drm.content:application/vnd.oma.drm.content"; // Sample CAF types
                                opaque_data = "12345678";
                                }
                        };
                }
        };
}

Important UIDs for CA Agents

  • 0x10009D8D - the ECOM DLL UID. Identifies a DLL as an ECOM plugin
  • 0x101FC2CE - The Content Access Agent v1.0 interface, an implementation of ContentAccess::CAgentFactory::NewL().
  • 0x10204740 - The Content Access Agent v2.0 interface, an implementation of ContentAccess::CAgentFactory::NewL().
When writing a new CA Agent, all other UIDs used in the above examples should be replaced by new UIDs from the Symbian UID generator.
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Backup and Restore

Backup and Restore

How to Backup and Restore Agent Data

Agents that own data that must be backed up should be implemented as a server and register for Backup and Restore notifications as described in SGL.GT0203.104 PC Connectivity How to write Backup aware Software.doc
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Example source code using CAF

Example source code using CAF

Some of the examples below do not include fully comprehensive error checking.

They are written this way to simplify the understanding of the basic steps involved. All errors should be handled appropriately in production code.

Consumer API

  • Reading from a file, no error checking
  • Reading from a file, with error checking
  • Preventing access to DRM content
  • File containing several content objects

Supplier API

  • Importing a content file, agent provides output files
  • Importing a content file, application provides output files

Reading from a file, no error checking

This example function takes the URI of a file and displays the plaintext version of that content on screen. If anything goes wrong, for instance the file does not exist or there are no valid rights that will allow the file to be displayed, the function will just leave.

It's important to notice the call to ContentAccess::CData::ExecuteIntent(), this should always be called, even if you think it's unlikely you will open DRM content.

class CContentViewer : public CBase
        {
public:
        static CContentViewer* NewL();
        static CContentViewer* NewLC();

        // Display given content.
        void DisplayContent(const TDesC& aUri, TRequestStatus& aStatus)
                {
                TRAPD(err, DisplayContentL(aUri));
                User::RequestComplete(aStatus, err);
                }

private:
        CContentViewer() : CBase() {}
        ~CContentViewer() {}

        void DisplayContentL(const TDesC& aUri)
                {
                TInt size = 0;
                TInt i = 0;

                // Create a CContent object
                // CAF will figure out the appropriate agent
                CContent *content = CContent::NewLC(aUri);

                // Create a CData object to read the content
                // Tell the agent we are planning to display the content
                CData *data = content->OpenContentLC(EDisplay);

                // Don't need content object any more
                CleanupStack::PopAndDestroy(content);

                // get the size of the plaintext content
                data->DataSizeL(size);

                // Execute the intent, tell the agent that we plan to display the content
                // It is at this point that any stateful rights will be decremented
                data->ExecuteIntentL(EDisplay);

                // read and display the file until we reach the end of the file
                TBuf <128> buffer;
                while(i < size)
                        {
                        // read from the file
                        User::LeaveIfError(data->Read(buffer));
                        i += buffer.Length();

                        // display on screen
                        printf(buffer);
                        }

                // finished with Data object
                CleanupStack::PopAndDestroy(data);
                }
        };

Reading from a file, with error checking

This example is the same as before except it attempts to obtain or wait for rights to become available rather than just leaving if access to the content is restricted.

class CContentViewer : public CActive
        {
public:
        static CContentViewer* NewL();
        static CContentViewer* NewLC();

        // Display given content.
        void DisplayContent(const TDesC& aUri, TRequestStatus& aStatus)
                {
                iUri = aUri;
                iClientStatus = &aStatus;
                *iClientStatus = KRequestPending;
                iCurrentState = EOpenFile;
                // trigger our RunL
                iStatus = KRequestPending;
                SetActive();
                User::RequestComplete(iStatus, KErrNone);
                }

        void RunL()
                {
                TInt err = iStatus.Int();

                switch (iCurrentState)
                        {
                        case EOpenFile:
                                iContent = CContent::NewL(aUri);
                                TRAP(err, iData = iContent->OpenContentL(EDisplay));
                                iCurrentState = EReadAndDisplay;        // follow through...
                        case EReadAndDisplay:
                                if(err == KErrNone)
                                        {
                                        TRAP(err, DisplayFile());
                                        iCurrentState = EFinished;
                                        // tell client iStatus that we have finished
                                        User::RequestComplete(*iClientStatus, err);
                                        return;
                                        }
                                else if(err == KErrCANoRights)
                                        {
                                        // we don't have rights so we need to wait for them
                                        iCurrentState = EWaitingForRights;
                                        // ask CAF to initiate download of rights
                                        iContent->RequestRights(iStatus);
                                        }
                                else if(err == KErrCAPendingRights)
                                        {
                                        // waiting for rights to arrive, expected any minute now
                                        iCurrentState = EWaitingForRights;
                                        // ask CAF to notify us when they arrive
                                        iContent->NotifyStatusChange(ERightsAvailable , iStatus);
                                        }
                                // wait for CAF to complete our request
                                iLastError = err;
                                iStatus = KRequestPending;
                                SetActive();
                                break;
                        case EWaitingForRights:
                                if(ret == KErrNone)
                                        {
                                        // change the state to try and display content again
                                        iCurrentState = EReadAndDisplay;
                                        // trigger our RunL
                                        iLastError = err;
                                        iStatus = KRequestPending;
                                        SetActive();
                                        User::RequestComplete(iStatus, KErrNone);
                                        }
                                else
                                        {
                                        // couldn't get rights, tell parent active object we're finished
                                        User::RequestComplete(iClientStatus, err);
                                        return;
                                        }
                                break;
                        }
                }

protected:
        void DoCancel()
                {
                if (iLastError == KErrCAPendingRights)
                        iContent->CancelNotifyStatusChange(iStatus);
                else if (iLastError == KErrCANoRights)
                        iContent->CancelRequestRights(iStatus);
                }

private:
        CContentViewer() : CActive(EPriorityStandard)
                {
                CActiveScheduler::Add(this);
                }
        ~CContentViewer()
                {
                Cancel();
                if (iData) delete iData;
                if (iContent) delete iContent;
                }

        // Display the content, if any error occurs then leave
        void DisplayContentL();
                {
                TInt size = 0;
                TInt i = 0;
                TBuf <128> buffer;

                // Execute the intent, tell the agent that we plan to display the content
                // It is at this point that any stateful rights will be decremented
                iData->ExecuteIntentL(EDisplay);

                // get the size of the plaintext content
                iData->DataSizeL(size);

                // read and display the file until we reach the end of the file
                while(i < size)
                        {
                        // read from the file
                        User::LeaveIfError(iData->Read(buffer));
                        i += buffer.Length();

                        // Display on screen
                        printf(buffer);
                        }
                }

private:
        enum TState
                {
                EOpenFile = 0,
                EReadAndDisplay,
                EWaitingForRights,
                EFinished
                };

        CContent*       iContent;
        CData*          iData;
        TDesC           iUri;

        TState                  iCurrentState;
        TInt                    iLastError;
        TRequestStatus*         iClientStatus;
        };

Preventing access to DRM content

Some servers may wish to prevent access to DRM content by untrusted clients, even if the server itself has DRM capability.

To achieve this the server should use the ContentAccess::TIntent::EUnknown intent when accessing content. Content files that are not DRM protected will still work normally, but access to DRM protected content will be blocked.

// Tell the agent we have no idea what the application plans to do
CData *data = content->OpenContentL(EUnknown);

// Execute the intent, tell the agent that we have no idea what the content will be used for
data->ExecuteIntentL(EUnknown);

File containing several content objects

When reading from a particular content object within a file the application must supply the UniqueId of the object when calling ContentAccess::CContent::OpenContentL().

void DisplayTextFileL(const TDesC& aUri)
        {
        TInt size = 0;
        TInt i = 0;

        TBuf <128> buffer;

        // Create a CContent object
        // CAF will figure out the appropriate agent
        CContent *content = CContent::NewLC(aUri);

        // Find the objects in the file with MIME type image/jpeg
        RStreamablePtrArray<CEmbeddedObject> myArray;
        CleanupClosePushL(myArray);

        User::LeaveIfError(content->Search(myArray, _L("image/jpeg"), EFalse));

        // Get the virtual path of the first image/jpeg we find
        TVirtualPathPtr picture = *myArray[0];

        // Tell the agent to open the object with the given UniqueId
        CData *data = content->OpenContentLC(EDisplay, picture.UniqueId());

        // Don't need content object or array any more
        CleanupStack::PopAndDestroy(2); // content, myArray

        // get the size of the plaintext content
        data->DataSizeL(size);

        // Execute the intent, tell the agent that we plan to display the content
        // It is at this point that any stateful rights will be decremented
        data->ExecuteIntentL(EDisplay);

        // read and display the file until we reach the end of the file
        while(i < size)
                {
                // read from the file
                User::LeaveIfError(data->Read(buffer));
                i += buffer.Length();

                // display on screen
                printf(buffer);
                }

        // finished with Data object
        CleanupStack::PopAndDestroy(data);
        }

Importing a content file, agent provides output files

This example shows how a messaging application that has just received a message attachment from a mail server can offer the attachment to CAF for processing. The output files will be saved in C:\files\.

void CMyApp::ReceiveMessageAttachment(const TDesC8& aContentType, const TDesC8& aMessageAttachment)
        {
        // Create supplier object
        CSupplier* supplier = CSupplier::NewLC();

        // Tell the agent where we would like the output files to be written
        supplier->SetOutputDirectoryL(_L("C:\\files"));

        // Check if CAF can import this attachment we just received
        if(supplier->IsImportSupported(aContentType))
                {
                ProcessAttachmentL(supplier, aContentType, aMessageAttachment);
                }
        else
                {
                // just save the message to a file in its current form
                RFile theFile;
                theFile.Open(iFs, "myFile");
                theFile.Write(aMessageAttachment);
                theFile.Close();

                // Add the file to the list of attachments
                AddAttachment("myFile");
                }
        }

void CMyApp::ProcessAttachmentL(CSupplier* aSupplier, const TDesC8& aContentType, const TDesC8& aMessageAttachment)
        {
        TInt err = KErrNone;
        TBuf <128> buf;

        // Create meta-data array
        CMetaDataArray* metaDataArray = new (ELeave) CMetaDataArray();
        CleanupStack::PushL(metaDataArray);

        // Add any useful information we can think of....
        // Obviously these would not be hardcoded this way in a real import
        metaDataArray->AddL(_L("Content Type"), _L("application/vnd.oma.drm.dm"));
        metaDataArray->AddL(_L("Content Length"), _L("1201"));
        metaDataArray->AddL(_L("X-Oma-Drm-Separate-Delivery"), _L("6"));

        // Create the import object
        CImportFile* import = aSupplier->ImportFileL(aContentType, *metaDataArray, _L("myfile"));
        CleanupStack::PushL(import);

        // import the attachment
        err = import->WriteData(aMessageText);

        // tell CAF (and hence the agent) it's now got the entire file
        if (err == KErrNone)
                {
                err = import->WriteDataComplete();
                if (err == KErrNone)
                        {
                        // Look at the output of the import operation
                        for(TInt i = 0; i < import->OutputFileCountL(); i++)
                                {
                                // for this example only add content output files
                                // (absorb any rights in the original attachment 'silently')
                                if(import->OutputFilesL(i).OutputType == EContent)
                                        {
                                        // Add file to list of attachments for this message
                                        AddAttachment(import->OutputFilesL(i).FileName());
                                        }
                                }
                        }
                }

        // Error handling
        if (err != KErrNone)
                {
                if (err == KErrNotReady)
                        {
                        DisplayErrorMsg("Agent not ready for import");
                        }
                else if (err == KErrCACorruptContent)
                        {
                        DisplayErrorMsg("Content data is corrupt");
                        }
                else
                        {
                        DisplayErrorMsg("Unexpected error: %d", err);
                        }
                }

        // Finished
        CleanupStack::PopAndDestroy(2);         // metaDataArray, import
        }

Importing a content file, application provides output files

This example shows how a messaging application that has just received a message attachment from a mail server can offer the attachment to CAF for processing and store the file in its own private directory.

void CMyApp::ReceiveMessageAttachment(const TDesC8& aContentType, const TDesC8& aMessageAttachment)
        {
        // Create supplier object
        CSupplier* supplier = CSupplier::NewLC();

        // Check if CAF can import this attachment we just received
        if(supplier->IsImportSupported(aContentType))
                {
                ProcessAttachmentL(supplier, aContentType, aMessageAttachment);
                }
        else
                {
                // just save the message to a file in its current form
                RFile theFile;
                theFile.Open(iFs, "myFile");
                theFile.Write(aMessageAttachment);
                theFile.Close();

                // Add the file to the list of attachments
                AddAttachment("myFile");
                }
        }

void CMyApp::ProcessAttachmentL(CSupplier* aSupplier, const TDesC8& aContentType, const TDesC8& aMessageAttachment)
        {
        TInt err = KErrNone;
        TBuf <128> buf;
        TBuf <4> fileExtension;

        _LIT(KOutputFileName, "\\private\\12345678\\outputfile.");
        TFileName fileName(KOutputFileExtension);

        RFile file;

        // Create meta-data array
        CMetaDataArray* metaDataArray = CMetaDataArray::NewLC();

        // Add any useful information we can think of....
        // Obviously these would not be hardcoded this way in a real import
        metaDataArray->AddL(_L("Content Type"), _L("application/vnd.oma.drm.dm"));
        metaDataArray->AddL(_L("Content Length"), _L("1201"));
        metaDataArray->AddL(_L("X-Oma-Drm-Separate-Delivery"), _L("6"));

        // Create the import object, no suggested file name implies the application will supply output files
        CImportFile* import = aSupplier->ImportFileL(aContentType, *metaDataArray);
        CleanupStack::PushL(import);

        // Start importing the attachment
        // (if the agent needs one or more output files, continue looping until
        // the agent finishes the previous)
        TInt err = import->WriteData(aMessageText);
        while(err == KErrCANewFileHandleRequired)
                {
                import->GetSuggestedOutputFileExtension(fileExtension);
                filName.Append(fileExtension);

                User::LeaveIfError(file.Open(iFs, fileName));
                err = import->ContinueWithNewOutputFile(file);
                file.Close();
                }

        if (err == KErrNone)
                {
                // Complete the import process
                err = import->WriteDataComplete();
                while(err == KErrCANewFileHandleRequired)
                        {
                        import->GetSuggestedOutputFileExtension(fileExtension);
                        filName.Append(fileExtension);

                        User::LeaveIfError(file.Open(iFs, fileName));
                        err = import->ContinueWithNewOutputFile(file);
                        file.Close();
                        }

                if (err == KErrNone)
                        {
                        // Look at the output of the import operation
                        for(TInt i = 0; i < import->OutputFileCountL(); i++)
                                {
                                // for this example only add content output files
                                // (absorb any rights in the original attachment 'silently')
                                if(import->OutputFilesL(i).OutputType == EContent)
                                        {
                                        // Add file to list of attachments for this message
                                        AddAttachment(import->OutputFilesL(i).FileName());
                                        }
                                }
                        }
                }

        // Error handling
        if (err != KErrNone)
                {
                if (err == KErrNotReady)
                        {
                        DisplayErrorMsg("Agent not ready for import");
                        }
                else if (err == KErrCACorruptContent)
                        {
                        DisplayErrorMsg("Content data is corrupt");
                        }
                else
                        {
                        DisplayErrorMsg("Unexpected error: %d", err);
                        }
                }

        // Finshed
        CleanupStack::PopAndDestroy(2);         // metaDataArray, import
        }
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Making an asynchronous SendReceive() call in an agent plugin

Making an asynchronous SendReceive() call in an agent plugin

An agent plugin may have to service an asynchronous request, for example when ContentAccess::CAgentManager::NotifyStatusChange() is called.

If the agent plugin must make an asynchronous SendReceive() call to service the request then it must be careful to ensure that any memory that is passed as an argument in the call is still valid when the agent server that receives the call processes and uses the memory.

There are two ways that this can be achieved:

  • Storing a local heap copy of transient data
  • Following the asynchronous call with a synchronous call

Storing a local heap copy of transient data

If the agent plugin cannot guarantee that a variable to be passed in the asynchronous SendReceive() call will still be in scope when the agent server comes to access and use it then the agent plugin should store a local heap copy of the data and pass this in the call instead. It is the responsibility of the agent plugin to maintain this heap memory and delete it when appropriate. Depending on how and when the agent server uses the memory, it may be safe to delete the memory after the asynchronous call has been accepted, or not until the asynchronous request has completed.

For example, an agent plugin could implement the API ContentAccess::CAgentManager::NotifyStatusChange() as illustrated below. Note that for this API the agent plugin can make no assumption about the scope of the descriptor passed to aURI.

void CTestAgentManager::NotifyStatusChange(const TDesC& aURI, TEventMask aMask, TRequestStatus& aStatus)
        {
        HBufC* uri = aURI.Alloc();
        if(uri)
                {
                // store the heap variable in a local array
                iAsyncDataArray.Append(uri); // takes ownership of uri
                SendReceive(EManagerNotifyStatusChange, TIpcArgs(uri,aMask),aStatus);
                }
        }

Following the asynchronous call with a synchronous call

Alternatively, the agent plugin can use the variables that are in scope at the time of the asynchronous SendReceive() call if it makes a synchronous SendReceive() call afterwards, within the same function scope, as illustrated below. The synchronous message can be a 'no operation' in the agent server.

void CTestAgentManager::NotifyStatusChange(const TDesC& aURI, TEventMask aMask, TRequestStatus& aStatus)
        {
        SendReceive(EManagerNotifyStatusChange, TIpcArgs(&aURI,aMask),aStatus);
        // this call doesn't have to be immediately after the asynchronous call, but within this function
        SendReceive(ENoOp,TIpcArgs(NULL));
        }

The synchronous call causes the message queue to be flushed into the agent server before the thread returns from the function and unwinds the call stack. The intention is that the agent server will only complete the second (synchronous) message after receiving and doing initial processing of the first (asynchronous) message, which may include, for example, reading the uri descriptor.

However, an obvious disadvantage of this pattern is that it incurs a second IPC call, and so may degrade performance.
Moreover, there are several caveats which must hold true in order for the pattern to work:

1. The kernel delivers messages in the order that they are sent (this is currently true).
2. The agent server is guaranteed to finish processing the first message before completing the second message.
This requires understanding of the agent server implementation.
3. After initial processing of the first (asynchronous) message the agent server does not need to access the memory supplied in the message again. This requires understanding of the agent server implementation.
4. The synchronous call is a request that has no effect on the state of the agent server - a 'no operation' may or may not be possible.

For these reasons, this pattern should only be used as a last resort - for example, if the agent plugin cannot store member data in its class for compatibility reasons.

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Considerations for Licensees using CAF

Considerations for Licensees using CAF

The Content Access Framework has several configurable aspects that can be altered at build time.

F32 Agent User Interface

The F32 Agent by default has no user interface. Its interface is implemented by a separate F32AGENTUI.DLL. This DLL can be replace with a DLL that actually does display information on the screen.

See also:
ContentAccess::TF32AgentUiFactory

CAF Recognizer Mime Types

The content types that CAF is allowed to map to x-caf-contentMimeType are given in the RECCAF.DLL configuration file. This file is located in the apparc server's private directory as \private\10003a3f\RecCaf\RecCafMimeTypes.txt.

Licensees should check to be sure all required MIME types are included in the file.

Allowing CAF to load non-ROM based agents

The Content Access Framework's default resolution behaviour on target devices results in Content Access Agents (CAAs) only being loaded from the ROM drive. This behaviour increases the security and reliability of the Content Access Framework and is in addition to the Platform Security capabilities system.

If a licensee wishes to produce a more open device relying only on capabilities to allow post production agents to be installed this default resolution behaviour can be overidden. When it is overidden CAF will load all CAAs visible to the ECOM service regardless of the drive that contains them. To do this the macro CAF_LOAD_POST_PRODUCTION_AGENTS will need to be defined at ROM build. In the emulator platform the default resolution behaviour is as if this macro is always defined.

The definition of this macro will patch a data variable in the caf.dll at ROM build-time. See \epoc32\include\caf\patchdata.h and \epoc32\rom\include\caf.iby.

Omitting Content Access Agents from ROMs

It is possible for device integrators to choose whether to support both protected and unprotected content or just unprotected content with the definition of the SYMBIAN_EXCLUDE_DRM_AGENT_PLUGINS macro at the ROM build stage.

Licensee UI platforms that wish to support this feature will need to honour this macro in the obey files of the Content Access Agents that are integrate into their platform. For example:

oma_caa.iby file:

#ifndef __OMA_CAA_IBY__

#define __OMA_CAA_IBY__

#ifndef SYMBIAN_EXCLUDE_DRM_AGENT_PLUGINS

ECOM_PLUGIN(omacaa_plugin.dll,10111213.rsc) file=ABI_DIR\BUILD_DIR\omacaa_server.exe omacaa_server.exe data=DATAZ_\private\10111210\settings.ini \private\10111210\settings.ini

#endif

#endif

This optionality was introduced in Symbian OS v9.3 to allow easy customisation of Symbian OS. See the files RemovableFeatures.iby and feature.iby in \epoc32\rom\include.

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: CAF v2.19 Release Notes

CAF v2.19 Release Notes

New in CAF v2.19

  • Added new value EContentVersion to enum TAttribute. Added two new values EContentLocation and ERightsIssuerURI to enum TStringAttribute. Adding these new attributes allows CAF to better support the OMA DRM v2 DCF specification.

New in CAF v2.18

  • Removed the capability requirement on users of the CImportFile API. Client processes using this API no long have to hold the DRM capability. The DRM capability must only be enforced by Content Access Agents on APIs that manipulate rights or that handle the plain text form of protected/encryted rights or content.

New in CAF v2.17

  • Added new patchable boolean variable to caf.dll called 'KCafLoadPostProductionAgents' held in a new patchdata.cpp file. Also updated caf.iby obey file to allow this variable to be set by licensees. The compile-time macro CAF_LOAD_POST_PRODUCTION_AGENTS has now become a ROM build-time macro. See Allowing CAF to load non-ROM based agents.

New in CAF v2.16

  • Added new entry in TStringAttribute for the TransactionID and updated the CAF API?SPI accordingly, to allow applications to retrieve thsi new attribute from the a content object.
  • Adding this new attribute makes CAF compliant to the OMA DRM v2 and the DCF Format.

New in CAF v2.15

  • Licensee considerations section of API documentation updated.

New in CAF v2.14

  • API documentation has been updated to clarify the usage of the asynchronous APIs.
  • New section 'Making an asynchronous SendReceive() call in an agent plugin' added to .chm file.

New in CAF v2.13

  • Added new error codes: KErrCACorruptContent and KErrCACorruptRights.
  • API documentation has been updated for the majority of APIs and SPIs to reflect changes.

CAF v1.0 Compatibilty

This release of CAF is scheduled for Mike (v9.1)

  • It will be binary compatible for applications currently using CAF v1.0
  • There are several deprecated functions which will be removed in a future release
  • It will not be source compatible for Content Access Agents implementing the CAF v1.0 API, they will need significant modifications to work with this release of CAF
  • Content Access Agent inteface UID changed to 0x10204740 for CAF v2.0 agents. This prevents CAF v2.0 trying to load CAF v1.0 agents and vice versa

New in CAF v2.12

  • ContentAccess::CData objects can now be constructed without a CContent object
  • ContentAccess::CContent and ContentAccess::CData objects can now be created by supplying a URI or by passing an open RFile handle
  • ContentAccess::CContent now allows applications to browse the contents of files containing more than one content object, see Listing objects within a container
  • ContentAccess::CData now allows applications to read a particular content object within a file, see Reading data from a content object
  • Concept of a virtual path has been introduced to identify content within a file, see Identifying a content object within a File
  • Added new attribute functions to ContentAccess::CContent and ContentAccess::CManager to query attributes related to a virtual path
  • Added ContentAccess::RAttributeSet and ContentAccess::RStringAttributeSet to allow several attributes to be queried in one function call
  • File management functions similar to RFs added to ContentAccess::CManager.
  • Agent management functions added to ContentAccess::CManager so applications can configure or query a particular agent
  • Event Notification functions added to ContentAccess::CContent and ContentAccess::CManager. The events currently relate to changes in the rights status of a content object.
  • Agent specific commands supported on ContentAccess::CContent and ContentAccess::CManager.
  • ContentAccess::CSupplier and ContentAccess::CImportFile now allow the client to supply output file handles for the agent to write to. See ContentAccess::CImportFile::ContinueWithNewOutputFile()
  • ContentAccess::CContent, ContentAccess::CData and ContentAccess::CImportFile now use less memory
  • ContentAccess::CAgentConsumer has been renamed ContentAccess::CAgentData
  • ContentAccess::CAgentSupplier has been renamed ContentAccess::CAgentImportFile
  • ContentAccess::CAgentRightsManager added to the agent interface
  • Added ContentAccess::CContentIterator to simplify discovery of content objects
  • Added template class ContentAccess::RStreamablePtrArray that simplifies the task of transferring arrays across the client server boundary.
  • Agents will implement the user interface. Applications can request to suppress the agent UI using the SetProperty() function (e.g. ContentAccess::CContent::SetProperty()). See CAF and the User Interface
  • KDefaultContentObject string introduced to identify that the client wants to open the default content object within the file. The default is used automatically if no UniqueId is specified. If the client specifies the UniqueId KNullDesC16(), the file will be opened in exactly the same way as an RFile, no translation will occur.
  • ContentAccess::CData::SetQosL() renamed to ContentAccess::CData::SetProperty(). Allows it to apply to other aspects of an agent without causing confusion
  • Removed "const" from ContentAccess::CData::Read() and ContentAccess::CData::Seek() functions so agents can maintain an internal state if necessary
  • Allow applications to include all of CAF by just doing include <caf//caf.h>
  • Agent server private directories are mapped from \private\SID\ to \private\agentname\

Deprecated code in CAF v2.12

  • Deprecated the ContentAccess::CAttribute class since it did not work well with multiple content object files
  • Deprecated ContentAccess::CCafMimeHeader and ContentAccess::CMimeFieldAndData, replaced with more generic ContentAccess::CMetaDataArray and ContentAccess::CMetaData
  • Deprecated ContentAccess::TMimeFields, not needed by new APIs
  • Deprecated ContentAccess::CBitset class, no longer required when retrieving attributes with new APIs
  • Deprecated ContentAccess::TCAFUtilsPanics used by ContentAccess::CBitset
  • Deprecated void CData::SetQosL(TQosAttribute aQosAttr, TInt aValue) (see ContentAccess::CData::SetQosL()),
    replaced by ContentAccess::CData::SetProperty().
  • Deprecated ContentAccess::TQosAttribute, replaced by ContentAccess::TAgentProperty
  • Deprecated CAttribute* CContent::NewAttributeL(TBool aPreloaded) (see ContentAccess::CContent::NewAttributeL()).
  • Deprecated CAttribute* CContent::NewAttributeL(TBool aPreloaded, TContentShareMode aShareMode) (see ContentAccess::CContent::NewAttributeL()).
  • Deprecated ContentAccess::CContent::OpenContentL(TIntent, TContentShareMode) function (see ContentAccess::CContent::OpenContentL()).
    The ContentAccess::TContentShareMode is now on the ContentAccess::CContent::NewL().
  • Deprecated TBool CData::GetMimeTypeL(TDes8& aMimeType) const; (see ContentAccess::CData::GetMimeTypeL()), can now retrieve this from string attributes.
  • Deprecated static void CManager::DeleteFileL (const TDesC &aFileName); (see ContentAccess::CManager::DeleteFileL()),
    replaced with non leaving function ContentAccess::CManager::DeleteFile().
  • Deprecated CImportFile * CSupplier::ImportFileL (CCafMimeHeader &aMimeHeader, const TDesC &aSuggestedFileName); (see ContentAccess::CSupplier::ImportFileL()),
    replaced with function that takes a ContentAccess::CMetaDataArray.
  • Deprecated CAttribute & CSupplierOutputFile::AttributesL (TBool aPreloaded); (see ContentAccess::CSupplierOutputFile::AttributesL())
    since ContentAccess::CAttribute is deprecated.
Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Graphical Class Hierarchy

  • Class List
  • Class Hierarchy
  • Class Members

Content Access Framework Graphical Class Hierarchy

Go to the textual class hierarchy

Generated on Wed Feb 28 12:21:14 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: agent.h Source File

  • File List
  • File Members

agent.h

Go to the documentation of this file.
00001 // agent.h
00002 // Copyright (c) Symbian Software Ltd 2004. All rights reserved.
00003
00011 #ifndef __CAF_AGENT_H__
00012 #define __CAF_AGENT_H__
00013
00014 #include <e32base.h>
00015
00017 const TInt KMaxAgentNameLength = KMaxFileName;
00018 const TInt KMaxSIDLength = 8;
00019
00020 namespace ContentAccess
00021         {
00022
00030         class TAgent
00031                 {
00032         public:
00036                 IMPORT_C const TDesC& Name() const;
00037
00044                 TUid ImplementationUid() const;
00045
00053                 void SetValue(const TDesC& aName, TUid aUid);
00054
00055         private:
00056
00057                 TBuf <KMaxAgentNameLength> iName;
00058                 TUid iImplementationUid;
00059                 };
00060         }
00061
00062 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: agentfactory.h Source File

  • File List
  • File Members

agentfactory.h

Go to the documentation of this file.
00001 // agentfactory.h
00002 // Copyright Symbian Software Ltd 2003 - 2007. All rights reserved
00003
00011 #ifndef __AGENTFACTORY_H__
00012 #define __AGENTFACTORY_H__
00013
00014 #include <e32base.h>
00015 #include <ecom/ecom.h>
00016 #include <caf/caftypes.h>
00017
00018 namespace ContentAccess
00019 {
00020         // Products
00021          class CAgentContent;
00022          class CAgentData;
00023          class CAgentImportFile;
00024          class CAgentManager;
00025          class CAgentRightsManager;
00026
00027         // Other CAF classes
00028         class CMetaData;
00029         class CMetaDataArray;
00030         class TVirtualPathPtr;
00031
00032
00034         const TUid KCAAgentInterfaceUid = {0x10204740};
00035
00060         class CAgentFactory : public CBase
00061                 {
00062         public:
00070                 static CAgentFactory* NewL(TUid aUid);
00071
00076                 IMPORT_C virtual ~CAgentFactory();
00077
00086                 virtual CAgentContent* CreateContentBrowserL(const TDesC& aURI, TContentShareMode aShareMode)  = 0;
00087
00095                 virtual CAgentContent* CreateContentBrowserL(RFile& aFile) = 0;
00096
00105                 virtual CAgentData* CreateDataConsumerL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)  = 0;
00106
00115                 virtual CAgentData* CreateDataConsumerL(RFile& aFile, const TDesC& aUniqueId)  = 0;
00116
00126                 virtual CAgentManager*  CreateManagerL()   = 0;
00127
00139                 virtual CAgentImportFile* CreateImporterL(const TDesC8& aMimeType, const CMetaDataArray& aMetaDataArray, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName) = 0;
00140
00150                 virtual CAgentImportFile* CreateImporterL(const TDesC8& aMimeType, const CMetaDataArray& aMetaDataArray) = 0;
00151
00158                 virtual CAgentRightsManager* CreateRightsManagerL() = 0;
00159
00160         private:
00161                 // ECOM session key. This is set by
00162                 // REComSession::CreateImplementationL() during construction
00163                 TUid iEcomKey;
00164                 };
00165
00166         } // namespace ContentAccess
00167 #endif // __AGENTFACTORY_H__
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: agentinterface.h Source File

  • File List
  • File Members

agentinterface.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2007. All rights reserved.
00002 // agentinterface.h
00003
00011 #ifndef __AGENTINTERFACE_H__
00012 #define __AGENTINTERFACE_H__
00013
00014 #include <e32base.h>
00015 #include <ecom/ecom.h>
00016
00017 #include <caf/caftypes.h>
00018 #include <caf/streamableptrarray.h>
00019 #include <caf/caferr.h>
00020
00021 class RStringPool;
00022 class RHTTPHeaders;
00023
00024 namespace ContentAccess
00025 {
00026         class CEmbeddedObject;
00027         class CSupplierOutputFile;
00028         class RAttributeSet;
00029         class RStringAttributeSet;
00030         class TVirtualPathPtr;
00031         class CRightsInfo;
00032         class CVirtualPath;
00033         class MAgentRightsBase;
00034         class CImportFile;
00035         class CMetaDataArray;
00036         class CDirStreamable;
00037
00045         class CAgentData : public CBase
00046                 {
00047         public:
00057                 virtual void DataSizeL(TInt &aSize) = 0;
00058
00083                 virtual TInt EvaluateIntent(TIntent aIntent) = 0;
00084
00114                 virtual TInt ExecuteIntent(TIntent aIntent) = 0;
00115
00133                 virtual TInt Read(TDes8& aDes) = 0;
00134
00151                 virtual TInt Read(TDes8& aDes, TInt aLength) = 0;
00152
00168                 virtual void Read(TDes8& aDes, TRequestStatus& aStatus) = 0;
00169
00188                 virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus) = 0;
00189
00223                 virtual TInt Seek(TSeek aMode, TInt& aPos) = 0;
00224
00239                 virtual TInt SetProperty(TAgentProperty aProperty, TInt aValue) = 0;
00240
00253                 virtual TInt GetAttribute(TInt aAttribute, TInt& aValue)=0;
00254
00264                 virtual TInt GetAttributeSet(RAttributeSet& aAttributeSet) = 0;
00265
00279                 virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue)=0;
00280
00281
00293                 virtual TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)=0;
00294
00319                 virtual TInt Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
00320                 };
00321
00328         class CAgentContent : public CBase
00329                 {
00330         public:
00345                 virtual TInt OpenContainer(const TDesC& aUniqueId) = 0;
00346
00359                 virtual  TInt CloseContainer() = 0;
00360
00373                 virtual void GetEmbeddedObjectsL(RStreamablePtrArray<CEmbeddedObject>& aArray) = 0;
00374
00385                 virtual void GetEmbeddedObjectsL(RStreamablePtrArray<CEmbeddedObject>& aArray, TEmbeddedType aType) = 0;
00386
00399                 virtual TInt Search(RStreamablePtrArray<CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool aRecursive) = 0;
00400
00415                 virtual TInt GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId) = 0;
00416
00429                 virtual TInt GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUniqueId) = 0;
00430
00446                 virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId) = 0;
00447
00460                 virtual TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId)=0;
00461
00477                 virtual TInt AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer) = 0;
00478
00498                 virtual void AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus) = 0;
00499
00509                 virtual void NotifyStatusChange(TEventMask aMask, TRequestStatus& aStatus, const TDesC& aUniqueId) = 0;
00510
00520                 virtual TInt CancelNotifyStatusChange(TRequestStatus& aStatus, const TDesC& aUniqueId) = 0;
00521
00547                 virtual void RequestRights(TRequestStatus& aStatus, const TDesC& aUniqueId) = 0;
00548
00558                 virtual TInt CancelRequestRights(TRequestStatus& aStatus, const TDesC& aUniqueId) = 0;
00559
00573                 virtual void DisplayInfoL(TDisplayInfo aInfo, const TDesC& aUniqueId) = 0;
00574
00589                 virtual TInt SetProperty(TAgentProperty aProperty, TInt aValue) = 0;
00590
00591                 };
00592
00605         class CAgentImportFile : public CBase
00606                 {
00607         public:
00608
00620                 virtual TInt WriteData(const TDesC8& aData)=0;
00621
00632                 virtual TInt WriteDataComplete()=0;
00633
00651                 virtual void WriteData(const TDesC8& aData, TRequestStatus& aStatus)=0;
00652
00669                 virtual void WriteDataComplete(TRequestStatus& aStatus)=0;
00670
00674                 virtual TInt OutputFileCountL() const = 0;
00675
00693                 virtual CSupplierOutputFile& OutputFileL(TInt aIndex) = 0;
00694
00705                 virtual TImportStatus GetImportStatus() const = 0;
00706
00707
00721                 virtual TInt GetSuggestedOutputFileExtension(TDes& aFileExtension) = 0;
00722
00735                 virtual TInt GetSuggestedOutputFileName(TDes& aFileName) = 0;
00736
00750                 virtual TInt ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName) = 0;
00751
00767                 virtual void ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName, TRequestStatus& aStatus) = 0;
00768
00771                 IMPORT_C virtual void Cancel();
00772                 };
00773
00787         class CAgentManager : public CBase
00788                 {
00789         public:
00815                 virtual TInt DeleteFile(const TDesC &aFileName) = 0;
00816
00834                 virtual TInt CopyFile(const TDesC& aSource, const TDesC& aDestination) = 0;
00835
00853                 virtual TInt RenameFile(const TDesC& aSource, const TDesC& aDestination) = 0;
00854
00872                 virtual TInt MkDir(const TDesC& aPath) = 0;
00873
00889                 virtual TInt MkDirAll(const TDesC& aPath) = 0;
00890
00907                 virtual TInt RmDir(const TDesC& aPath) = 0;
00908
00939                 virtual TInt GetDir(const TDesC& aName,TUint aEntryAttMask,TUint aEntrySortKey, CDir*& aEntryList) const = 0;
00940
00971                 virtual TInt GetDir(const TDesC& aName,TUint aEntryAttMask,TUint aEntrySortKey, CDir*& aEntryList,CDir*& aDirList) const = 0;
00972
01001                 virtual TInt GetDir(const TDesC& aName,const TUidType& aEntryUid,TUint aEntrySortKey, CDir*& aFileList) const = 0;
01002
01016                 virtual TInt GetAttribute(TInt aAttribute, TInt& aValue, const TVirtualPathPtr& aVirtualPath) = 0;
01017
01029                 virtual TInt GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) = 0;
01030
01045                 virtual TInt GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) = 0;
01046
01058                 virtual TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) = 0;
01059
01069                 virtual void NotifyStatusChange(const TDesC& aURI, TEventMask aMask, TRequestStatus& aStatus) = 0;
01070
01079                 virtual TInt CancelNotifyStatusChange(const TDesC& aURI, TRequestStatus& aStatus) = 0;
01080
01094                 virtual TInt SetProperty(TAgentProperty aProperty, TInt aValue) = 0;
01095
01109                 virtual void DisplayInfoL(TDisplayInfo aInfo, const TVirtualPathPtr& aVirtualPath) = 0;
01110
01122                 virtual TBool IsRecognizedL(const TDesC& aURI, TContentShareMode aShareMode) const = 0;
01123
01133                 virtual TBool IsRecognizedL(RFile& aFile) const = 0;
01134
01168                 virtual TBool RecognizeFileL(const TDesC& aFileName, const TDesC8& aBuffer, TDes8& aFileMimeType, TDes8& aContentMimeType) const = 0;
01169
01170
01186                 virtual TInt AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer) = 0;
01187
01206                 virtual void AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus) = 0;
01207
01219                 virtual void DisplayManagementInfoL() = 0;
01220
01221
01228                 virtual void PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const = 0;
01229
01230
01248                 IMPORT_C virtual TInt RenameDir(const TDesC& aOldName, const TDesC& aNewName );
01249
01268                 IMPORT_C virtual TInt CopyFile(RFile& aSource, const TDesC& aDestination);
01269
01270                 };
01271
01272
01279         class CAgentRightsManager  : public CBase
01280                 {
01281         public:
01290                 virtual void ListAllRightsL(RStreamablePtrArray<CRightsInfo>& aArray) const = 0;
01291
01301                 virtual void ListRightsL(RStreamablePtrArray<CRightsInfo>& aArray, const TDesC& aUri) const = 0;
01302
01312                 virtual void ListRightsL(RStreamablePtrArray<CRightsInfo>& aArray, TVirtualPathPtr& aVirtualPath) const = 0;
01313
01323                 virtual void ListContentL(RStreamablePtrArray<CVirtualPath>& aArray, CRightsInfo& aRightsInfo) const = 0;
01324
01334                 virtual MAgentRightsBase* GetRightsDataL(const CRightsInfo& aRightsInfo) const = 0;
01335
01350                 virtual TInt DeleteRightsObject(const CRightsInfo& aRightsInfo) = 0;
01351
01366                 virtual TInt DeleteAllRightsObjects(const TVirtualPathPtr& aVirtualPath) = 0;
01367
01380                 virtual TInt SetProperty(TAgentProperty aProperty, TInt aValue) = 0;
01381                 };
01382
01383
01384 } // namespace ContentAccess
01385 #endif // __AGENTINTERFACE_H__
01386
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Architecture.dox File Reference

  • File List
  • File Members

Architecture.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: AsyncSendReceive.dox File Reference

  • File List
  • File Members

AsyncSendReceive.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: attribute.h Source File

  • File List
  • File Members

attribute.h

Go to the documentation of this file.
00001 // attribute.h
00002 // Copyright (C) 2003 Symbian Ltd.  All rights reserved.
00003
00011 #ifndef __CAF_ATTRIBUTE_H__
00012 #define __CAF_ATTRIBUTE_H__
00013
00014 #ifndef REMOVE_CAF1
00015
00016 #include <e32base.h>
00017 #include <f32file.h>
00018 #include <caf/caftypes.h>
00019
00020
00021 namespace ContentAccess
00022 {
00023         class CAgentContent;
00024         class CAgentFactory;
00025         class CBitset;
00026
00048         class CAttribute : public CBase
00049                 {
00050         public:
00061                 static CAttribute* NewLC(const TUid aAgentUid, RFile& aFile);
00062
00074                 static CAttribute* NewLC(const TUid aAgentUid, const TDesC& aURI, TContentShareMode aShareMode=EContentShareReadOnly);
00075
00076
00077                 virtual ~CAttribute();
00078
00094                 IMPORT_C CBitset& QuerySet();
00095
00103                 IMPORT_C const CBitset& ResponseSet() const;
00104
00108                 IMPORT_C void Reset();
00109
00117                 IMPORT_C void GetL();
00118
00119         private:
00120                 void ConstructL(const TUid aAgentUid, RFile& aFile);
00121                 void ConstructL(const TUid aAgentUid, const TDesC& aURI, TContentShareMode aShareMode=EContentShareReadOnly);
00122                 CAttribute();
00123
00124         private:
00126                 CAgentContent* iAgentContent;
00127                 CAgentFactory* iAgentFactory;
00128
00129                 CBitset* iQuerySet;
00130                 CBitset* iResponseSet;
00131                 };
00132         }
00133
00134 #endif // REMOVE_CAF1
00135
00136 #endif // __ATTRIBUTE_H__
00137
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Attributes.dox File Reference

  • File List
  • File Members

Attributes.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: attributeset.h Source File

  • File List
  • File Members

attributeset.h

Go to the documentation of this file.
00001 // attributeset.h
00002 // Copyright (c) Symbian Software Ltd 2004-2005. All rights reserved.
00003
00012 #ifndef __ATTRIBUTESET_H__
00013 #define __ATTRIBUTESET_H__
00014
00015 #include <e32base.h>
00016 #include <caf/caftypes.h>
00017
00018 class RReadStream;
00019 class RWriteStream;
00020
00021 namespace ContentAccess
00022         {
00023
00036         class RAttributeSet
00037                 {
00041                 class TAttributeValue
00042                         {
00043                 public:
00044                         TInt iAttribute;
00045                         TInt iValue;
00046                         TInt iError;
00047                         };
00048
00049         public:
00050                 IMPORT_C RAttributeSet();
00051
00056                 IMPORT_C void Close();
00057
00063                 IMPORT_C void AddL(TInt aAttribute);
00064
00072                 IMPORT_C TInt GetValue(TInt aAttribute, TInt& aValue) const;
00073
00082                 IMPORT_C TInt SetValue(TInt aAttribute, TInt aValue, TInt aErrorCode);
00083
00088                 IMPORT_C TInt operator [] (TInt aIndex) const;
00089
00093                 IMPORT_C TInt Count() const;
00094
00098                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00099
00107                 IMPORT_C void InternalizeL(RReadStream& aStream);
00108
00109         private:
00110                 void AddL(TInt aAttribute, TInt aValue, TInt aErrorCode);
00111
00112                 RArray <TAttributeValue> iAttributes;
00113                 };
00114         }
00115 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: BackupAndRestoreOfAgentData.dox File Reference

  • File List
  • File Members

BackupAndRestoreOfAgentData.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: bitset.h Source File

  • File List
  • File Members

bitset.h

Go to the documentation of this file.
00001 // bitset.h
00002 // Copyright (C) 2003 Symbian Ltd.  All rights reserved.
00003
00011 #ifndef __BITSET_H__
00012 #define __BITSET_H__
00013
00014 #ifndef REMOVE_CAF1
00015
00016 #include <e32base.h>
00017 #include <caf/caftypes.h>
00018
00019 class RWriteStream;
00020 class RReadStream;
00021
00022 namespace ContentAccess
00023 {
00024
00026         enum TCafUtilsPanics
00027                 {
00028                 EInvalidBit
00029                 };
00030
00031         _LIT(KCafUtilsPanic, "CafUtils");
00032
00041         class CBitset : public CBase
00042                 {
00043         public:
00049                 IMPORT_C static CBitset* NewL(TInt aMaxBits);
00050
00052                 IMPORT_C static CBitset* NewLC(TInt aMaxBits);
00053
00059                 IMPORT_C static CBitset* NewL(const CBitset& aSource);
00060
00062                 IMPORT_C static CBitset* NewLC(const CBitset& aSource);
00063
00064                 virtual ~CBitset();
00065
00066         public:
00068                 IMPORT_C void Reset();
00069
00071                 IMPORT_C TInt MaxBits() const;
00072
00074                 IMPORT_C void SetAll();
00075
00077                 IMPORT_C void Invert();
00078
00083                 IMPORT_C void Set(TInt aBit);
00084
00089                 IMPORT_C void Unset(TInt aBit);
00090
00099                 IMPORT_C TBool IsSet(TInt aBit) const;
00100
00111                 IMPORT_C CBitset& operator=(const CBitset& aSource);
00112
00123                 IMPORT_C TBool operator==(const CBitset& aSource) const;
00124                 inline TBool operator!=(const CBitset& aSource) const;
00125
00133                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00134
00142                 IMPORT_C void InternalizeL(RReadStream& aStream);
00143
00151                 IMPORT_C void SetListL(TInt aItems, ...);
00152
00161                 IMPORT_C TBool IsSetList(TInt aItems, ...) const;
00162
00163         private:
00164                 void ConstructL(TInt aMaxId);
00165                 void ConstructL(const CBitset& aSource);
00166                 CBitset();
00167                 CBitset(const CBitset& aSource);
00168
00178                 void IdentifyBit(TInt aBitId, TInt& aByte, TInt& aBitInByte) const;
00179
00186                 inline TBool ValidBit(TInt aAttributeId) const;
00187
00188         private:
00190                 TInt iWidth;
00191
00193                 TInt iMaxBits;
00194
00196                 TUint8* iBitSet;
00197                 };
00198
00199 }
00200
00201 inline TBool ContentAccess::CBitset::operator!=(const CBitset& aSource) const
00202         {
00203         return !operator==(aSource);
00204         }
00205
00206 inline TBool ContentAccess::CBitset::ValidBit(TInt aBit) const
00207         {
00208         return (aBit >= 0) && (aBit < iMaxBits);
00209         }
00210
00211 #endif // REMOVE_CAF1
00212
00213 #endif // __BITSET_H__
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: caf.h Source File

  • File List
  • File Members

caf.h

Go to the documentation of this file.
00001 // caf.h
00002 // Copyright (C) Symbian Software Ltd 2003 - 2004.  All rights reserved.
00003
00004
00015 #ifndef __CAF_H__
00016 #define __CAF_H__
00017
00018 #include <e32std.h>
00019
00020 // Errors and Panics
00021 #include <caf/caferr.h>
00022 #include <caf/cafpanic.h>
00023
00024 // Enumerations
00025 #include <caf/caftypes.h>
00026
00027 // Client side classes for use by the general public
00028 #include <caf/agent.h>
00029 #include <caf/content.h>
00030 #include <caf/data.h>
00031 #include <caf/manager.h>
00032 #include <caf/supplier.h>
00033 #include <caf/importfile.h>
00034 #include <caf/rightsmanager.h>
00035
00036 // Utiltiy classes from CafUtils
00037 #include <caf/supplieroutputfile.h>
00038 #include <caf/metadata.h>
00039 #include <caf/metadataarray.h>
00040 #include <caf/virtualpath.h>
00041 #include <caf/virtualpathptr.h>
00042 #include <caf/embeddedobject.h>
00043 #include <caf/attributeset.h>
00044 #include <caf/rightsinfo.h>
00045 #include <caf/attributeset.h>
00046 #include <caf/stringattributeset.h>
00047 #include <caf/streamableptrarray.h>
00048 #include <caf/dirstreamable.h>
00049
00050 // deprecated headerfiles
00051 #include <caf/attribute.h>
00052 #include <caf/cafmimeheader.h>
00053
00054 #endif // __CAF_H__
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: CAFCorruptData.dox File Reference

  • File List
  • File Members

CAFCorruptData.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: caferr.h Source File

  • File List
  • File Members

caferr.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2006. All rights reserved.
00002 // caferr.h
00003
00019 #ifndef __CAFERR_H__
00020 #define __CAFERR_H__
00021
00022 #include <e32std.h>
00023
00024
00036 const TInt KErrCA_UpperLimit = -17450;
00037
00038
00050 const TInt KErrCA_LowerLimit = -17549;
00051
00052
00053
00057 const TInt KErrCANotSupported = -17450;
00058
00064 const TInt KErrCANoPermission = -17451;
00065
00071 const TInt KErrCANoRights = -17452;
00072
00078 const TInt KErrCANoAgent = -17453;
00079
00083 const TInt KErrCAOutOfRange = -17454;
00084
00089 const TInt KErrCAPendingRights = -17455;
00090
00096 const TInt KErrCASizeNotDetermined = -17456;
00097
00102 const TInt KErrCANewFileHandleRequired = -17457;
00103
00104
00112 const TInt KErrCACorruptRights = -17458;
00113
00114
00122 const TInt KErrCACorruptContent = -17459;
00123
00124
00125 #endif // __CAFERR_H__
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: CAFIntroduction.dox File Reference

  • File List
  • File Members

CAFIntroduction.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: cafmainpage.dox File Reference

  • File List
  • File Members

cafmainpage.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: cafmimeheader.h Source File

  • File List
  • File Members

cafmimeheader.h

Go to the documentation of this file.
00001 // CafMimeHeader.h
00002 // Copyright (c) 2003 Symbian Ltd.  All rights reserved.
00003
00012 #ifndef __CAFMIMEHEADER_H__
00013 #define __CAFMIMEHEADER_H__
00014
00015 #ifndef REMOVE_CAF1
00016
00017 #include <caf/caftypes.h>
00018
00019 #include <e32std.h>
00020 #include <e32base.h>
00021 #include <caf/caftypes.h>
00022
00023 class RWriteStream;
00024 class RReadStream;
00025
00026 namespace ContentAccess
00027         {
00028         class CMimeFieldAndData;
00029
00078         class CCafMimeHeader : public CBase
00079                 {
00080         public:
00088                 IMPORT_C static CCafMimeHeader* NewL(const TDesC8& aContent_Type);
00089
00091                 IMPORT_C virtual ~CCafMimeHeader();
00092
00098                 IMPORT_C void SetStandardMimeDataL(const TMimeFields &aIndex, const TDesC8& aData);
00099
00105                 IMPORT_C TPtrC8 StandardMimeData(const TMimeFields& aIndex) const;
00106
00114                 IMPORT_C void AddNonStandardMimeL(const TDesC8& aFieldName, const TDesC8& aData);
00115
00121                 IMPORT_C TPtrC8 NonStandardMimeField(TInt aIndex) const;
00122
00128                 IMPORT_C TPtrC8 NonStandardMimeData(TInt aIndex) const;
00129
00136                 IMPORT_C TInt NonStandardMimeCount() const;
00137
00145                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00146
00154                 IMPORT_C void InternalizeL(RReadStream& aStream);
00155
00156         private:
00157                 CCafMimeHeader();
00158
00159                 void ConstructL(const TDesC8& aContent_Type);
00160
00161                 // Index used to map the fixed TMimeFields field value to the position in
00162                 // iStandardMimeHeaders used to store it
00163                 HBufC8* iStandardMimeHeader[EMimeMax];
00164
00168                 RPointerArray <CMimeFieldAndData> iNonStandardMimeHeaders;
00169
00170                 };
00171         }
00172 #endif // REMOVE_CAF1
00173
00174 #endif // __CAFMIMEHEADER_H__
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: cafpanic.h Source File

  • File List
  • File Members

cafpanic.h

Go to the documentation of this file.
00001 // cafpanic.h
00002 //
00003 // Copyright (c) 2004 Symbian Ltd.  All rights reserved.
00004 //
00005 // The panic method and panic code declarations
00006
00014 #ifndef __CAFPANIC_H__
00015 #define __CAFPANIC_H__
00016
00017 #include <e32base.h>
00018
00021 enum TCafPanics
00022         {
00023         ECafPanicDuplicateF32Agent                                      = 1,
00024         ECafPanicNoF32Agent                                                     = 2,
00025         ECafPanicF32AgentImportNotSupported                     = 3,
00026         ECafPanicF32AgentRightManagerNotSupported   = 4,
00027         ECafPanicF32AgentManagementInfoNotSupported = 5,
00028         ECafPanicContentIteratorThreadPanic             = 6,
00029         ECafPanicContentIteratorUnknownRequest          = 7,
00030         ECafPanicF32AgentPrepareHTTPHeadersNotSupported = 8
00031         };
00032
00033 _LIT(KCafPanicString,"CAF");
00034
00035 #endif // __CAFPANIC_H__
00036
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: CafRecognizer.dox File Reference

  • File List
  • File Members

CafRecognizer.dox File Reference

Generated on Wed Feb 28 12:21:05 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: caftypes.h Source File

  • File List
  • File Members

caftypes.h

Go to the documentation of this file.
00001 // caftypes.h
00002 // Copyright (c) 2003 - 2007 Symbian Software Ltd. All rights reserved.
00003
00014 #ifndef __CAF_TYPES_H__
00015 #define __CAF_TYPES_H__
00016
00017 #include <e32std.h>
00018
00019 namespace ContentAccess
00020         {
00021 #ifndef REMOVE_CAF1
00022
00023         enum TQosAttribute
00024                 {
00025                 EQosBufferSize   = 0,
00026                 EQosAttrTop // Must always be last sequential entry
00027                 };
00028
00035         enum TMimeFields
00036                 {
00037                 EContentType                            = 0,
00038                 EContentLength                          = 1,
00039                 EContentId                                      = 2,
00040                 EContentTransferEncoding        = 3,
00041                 EBoundary                                       = 4,
00042                 EMimeMax
00043                 };
00044 #endif // REMOVE_CAF1
00045
00050         enum TContentShareMode
00051                 {
00052                 EContentShareReadOnly      = 0,
00053                 EContentShareReadWrite     = 1,
00054                 EContentShareExclusive     = 2
00055                 };
00056
00061         enum TIntent
00062                 {
00063                 EPeek           = 0,
00064                 EPlay           = 1,
00065                 EView           = 2,
00066                 EExecute        = 3,
00067                 EPrint          = 4,
00068                 EPause          = 5,
00069                 EContinue       = 6,
00070                 EStop           = 7,
00071                 EUnknown    = 8,
00072                 EInstall        = 9
00073                 };
00074
00075
00081         enum TOutputType
00082                 {
00083                 EContent                                        = 0,
00084                 EReceipt                                        = 1
00085                 };
00086
00091         enum TImportStatus
00092                 {
00093                 EInProgress,
00094                 EWaitingForNewOutputFile,
00095                 EComplete,
00096                 EFailed,
00097                 EUnsupportedMedia
00098                 };
00099
00108         enum TAttribute
00109                         {
00110                         EIsProtected                            = 0,
00111                         EIsForwardable                          = 1,
00112                         EIsModifyable                           = 2,
00113                         EIsCopyable                                     = 3,
00114                         ECanPlay                                        = 4,
00115                         ECanPrint                                       = 5,
00116                         ECanExecute                                     = 6,
00117                         ECanView                                        = 7,
00118                         ERightsNone                                     = 8,
00119                         ERightsPending                          = 9,
00120                         ERightsHaveExpired                      = 10,
00121                         EPreviewAvailable                       = 11,
00122                         EContentCDataInUse                      = 12,
00123                         ECanRewind                                      = 13,
00124                         ECopyPaste                                      = 14,
00125                         ERightsConsumable                       = 15,
00126                         ERightsStateless                        = 16,
00127                         ECanMove                                        = 17,
00128                         ECanRename                                      = 18,
00129                         ECanAutomaticConsume            = 19,
00130                         EContentVersion                         = 20,
00131                         EAgentSpecificAttributeBase     = 32768
00132                         };
00133
00134
00135
00140                 enum TStringAttribute
00141                         {
00142                         EDescription                            = 0,
00143                         EMimeType                                       = 1,
00144                         ETitle                                          = 2,
00145                         EAuthor                                         = 3,
00146                         EIconURI                                        = 4,
00147                         EPreviewURI                                     = 5,
00148                         EContentURI                                     = 6,
00149                         EContentID                                      = 7,
00150                         EInfoURL                                        = 8,
00151                         EPendingRightsETA                       = 9,
00152                         ETransactionID                          = 10,
00153                         EContentLocation                = 11,
00154                         ERightsIssuerURI                        = 12,
00155                         EAgentSpecificStringAttributeBase       = 32768
00156                         };
00157
00162                 enum TEventMask
00163                         {
00164                         ERightsAvailable = 1,
00165                         ERightsExpired   = 2
00166                         };
00171                 enum TEmbeddedType
00172                         {
00173                         EContainerObject                = 0,
00174                         EContentObject                  = 1,
00175                         EAgentSpecificObject    = 2
00176                         };
00177
00181                 enum TDisplayInfo
00182                         {
00183                         EFileProperties                 = 0,
00184                         EFileAndRights                  = 1,
00185                         ERights                                 = 2
00186                         };
00187
00194                 enum TRightsTypeMask
00195                         {
00196                         ERightsTypeConsumable           = 1,
00197                         ERightsTypeStateless            = 2
00198                         };
00199
00203                 enum TRightsStatus
00204                         {
00205                         ERightsStatusNone                               = 0,
00206                         ERightsStatusValid                              = 1,
00207                         ERightsStatusExpired                    = 2,
00208                         ERightsStatusPending                    = 3
00209                         };
00210
00213         _LIT(KDefaultContentObject,"DEFAULT");
00214
00218         enum TAgentProperty
00219                 {
00220                 EAgentPropertyBufferSize                                = 0,
00221                 EAgentPropertyAgentUI                                   = 1,
00222                 EAgentPropertyMultipleSequence                  = 2
00223                 };
00224
00227         const TInt KMaxCafUniqueId = 1024;
00228
00231         const TInt KMaxCafContentName = 1024;
00232
00233         }
00234
00235 #endif // __CAF_H__
00236
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CAgentContent Member List

This is the complete list of members for ContentAccess::CAgentContent, including all inherited members.

AgentSpecificCommand(TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer)=0 | ContentAccess::CAgentContent | [pure virtual]
AgentSpecificCommand(TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus)=0 | ContentAccess::CAgentContent | [pure virtual]
CancelNotifyStatusChange(TRequestStatus &aStatus, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
CancelRequestRights(TRequestStatus &aStatus, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
CloseContainer()=0 | ContentAccess::CAgentContent | [pure virtual]
DisplayInfoL(TDisplayInfo aInfo, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
GetAttribute(TInt aAttribute, TInt &aValue, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
GetAttributeSet(RAttributeSet &aAttributeSet, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
GetEmbeddedObjectsL(RStreamablePtrArray< CEmbeddedObject > &aArray)=0 | ContentAccess::CAgentContent | [pure virtual]
GetEmbeddedObjectsL(RStreamablePtrArray< CEmbeddedObject > &aArray, TEmbeddedType aType)=0 | ContentAccess::CAgentContent | [pure virtual]
GetStringAttribute(TInt aAttribute, TDes &aValue, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
NotifyStatusChange(TEventMask aMask, TRequestStatus &aStatus, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
OpenContainer(const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
RequestRights(TRequestStatus &aStatus, const TDesC &aUniqueId)=0 | ContentAccess::CAgentContent | [pure virtual]
Search(RStreamablePtrArray< CEmbeddedObject > &aArray, const TDesC8 &aMimeType, TBool aRecursive)=0 | ContentAccess::CAgentContent | [pure virtual]
SetProperty(TAgentProperty aProperty, TInt aValue)=0 | ContentAccess::CAgentContent | [pure virtual]

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CAgentData Member List

This is the complete list of members for ContentAccess::CAgentData, including all inherited members.

DataSizeL(TInt &aSize)=0 | ContentAccess::CAgentData | [pure virtual]
EvaluateIntent(TIntent aIntent)=0 | ContentAccess::CAgentData | [pure virtual]
ExecuteIntent(TIntent aIntent)=0 | ContentAccess::CAgentData | [pure virtual]
GetAttribute(TInt aAttribute, TInt &aValue)=0 | ContentAccess::CAgentData | [pure virtual]
GetAttributeSet(RAttributeSet &aAttributeSet)=0 | ContentAccess::CAgentData | [pure virtual]
GetStringAttribute(TInt aAttribute, TDes &aValue)=0 | ContentAccess::CAgentData | [pure virtual]
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet)=0 | ContentAccess::CAgentData | [pure virtual]
Read(TDes8 &aDes)=0 | ContentAccess::CAgentData | [pure virtual]
Read(TDes8 &aDes, TInt aLength)=0 | ContentAccess::CAgentData | [pure virtual]
Read(TDes8 &aDes, TRequestStatus &aStatus)=0 | ContentAccess::CAgentData | [pure virtual]
Read(TDes8 &aDes, TInt aLength, TRequestStatus &aStatus)=0 | ContentAccess::CAgentData | [pure virtual]
Read(TInt aPos, TDes8 &aDes, TInt aLength, TRequestStatus &aStatus) | ContentAccess::CAgentData | [virtual]
Seek(TSeek aMode, TInt &aPos)=0 | ContentAccess::CAgentData | [pure virtual]
SetProperty(TAgentProperty aProperty, TInt aValue)=0 | ContentAccess::CAgentData | [pure virtual]

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CAgentFactory Member List

This is the complete list of members for ContentAccess::CAgentFactory, including all inherited members.

CreateContentBrowserL(const TDesC &aURI, TContentShareMode aShareMode)=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateContentBrowserL(RFile &aFile)=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateDataConsumerL(const TVirtualPathPtr &aVirtualPath, TContentShareMode aShareMode)=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateDataConsumerL(RFile &aFile, const TDesC &aUniqueId)=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateImporterL(const TDesC8 &aMimeType, const CMetaDataArray &aMetaDataArray, const TDesC &aOutputDirectory, const TDesC &aSuggestedFileName)=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateImporterL(const TDesC8 &aMimeType, const CMetaDataArray &aMetaDataArray)=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateManagerL()=0 | ContentAccess::CAgentFactory | [pure virtual]
CreateRightsManagerL()=0 | ContentAccess::CAgentFactory | [pure virtual]
NewL(TUid aUid) | ContentAccess::CAgentFactory | [static]
~CAgentFactory() | ContentAccess::CAgentFactory | [virtual]

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CAgentImportFile Member List

This is the complete list of members for ContentAccess::CAgentImportFile, including all inherited members.

Cancel() | ContentAccess::CAgentImportFile | [virtual]
ContinueWithNewOutputFile(RFile &aFile, const TDesC &aFileName)=0 | ContentAccess::CAgentImportFile | [pure virtual]
ContinueWithNewOutputFile(RFile &aFile, const TDesC &aFileName, TRequestStatus &aStatus)=0 | ContentAccess::CAgentImportFile | [pure virtual]
GetImportStatus() const =0 | ContentAccess::CAgentImportFile | [pure virtual]
GetSuggestedOutputFileExtension(TDes &aFileExtension)=0 | ContentAccess::CAgentImportFile | [pure virtual]
GetSuggestedOutputFileName(TDes &aFileName)=0 | ContentAccess::CAgentImportFile | [pure virtual]
OutputFileCountL() const =0 | ContentAccess::CAgentImportFile | [pure virtual]
OutputFileL(TInt aIndex)=0 | ContentAccess::CAgentImportFile | [pure virtual]
WriteData(const TDesC8 &aData)=0 | ContentAccess::CAgentImportFile | [pure virtual]
WriteData(const TDesC8 &aData, TRequestStatus &aStatus)=0 | ContentAccess::CAgentImportFile | [pure virtual]
WriteDataComplete()=0 | ContentAccess::CAgentImportFile | [pure virtual]
WriteDataComplete(TRequestStatus &aStatus)=0 | ContentAccess::CAgentImportFile | [pure virtual]

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CAgentManager Member List

This is the complete list of members for ContentAccess::CAgentManager, including all inherited members.

AgentSpecificCommand(TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer)=0 | ContentAccess::CAgentManager | [pure virtual]
AgentSpecificCommand(TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus)=0 | ContentAccess::CAgentManager | [pure virtual]
CancelNotifyStatusChange(const TDesC &aURI, TRequestStatus &aStatus)=0 | ContentAccess::CAgentManager | [pure virtual]
CopyFile(const TDesC &aSource, const TDesC &aDestination)=0 | ContentAccess::CAgentManager | [pure virtual]
CopyFile(RFile &aSource, const TDesC &aDestination) | ContentAccess::CAgentManager | [virtual]
DeleteFile(const TDesC &aFileName)=0 | ContentAccess::CAgentManager | [pure virtual]
DisplayInfoL(TDisplayInfo aInfo, const TVirtualPathPtr &aVirtualPath)=0 | ContentAccess::CAgentManager | [pure virtual]
DisplayManagementInfoL()=0 | ContentAccess::CAgentManager | [pure virtual]
GetAttribute(TInt aAttribute, TInt &aValue, const TVirtualPathPtr &aVirtualPath)=0 | ContentAccess::CAgentManager | [pure virtual]
GetAttributeSet(RAttributeSet &aAttributeSet, const TVirtualPathPtr &aVirtualPath)=0 | ContentAccess::CAgentManager | [pure virtual]
GetDir(const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList) const =0 | ContentAccess::CAgentManager | [pure virtual]
GetDir(const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList, CDir *&aDirList) const =0 | ContentAccess::CAgentManager | [pure virtual]
GetDir(const TDesC &aName, const TUidType &aEntryUid, TUint aEntrySortKey, CDir *&aFileList) const =0 | ContentAccess::CAgentManager | [pure virtual]
GetStringAttribute(TInt aAttribute, TDes &aValue, const TVirtualPathPtr &aVirtualPath)=0 | ContentAccess::CAgentManager | [pure virtual]
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet, const TVirtualPathPtr &aVirtualPath)=0 | ContentAccess::CAgentManager | [pure virtual]
IsRecognizedL(const TDesC &aURI, TContentShareMode aShareMode) const =0 | ContentAccess::CAgentManager | [pure virtual]
IsRecognizedL(RFile &aFile) const =0 | ContentAccess::CAgentManager | [pure virtual]
MkDir(const TDesC &aPath)=0 | ContentAccess::CAgentManager | [pure virtual]
MkDirAll(const TDesC &aPath)=0 | ContentAccess::CAgentManager | [pure virtual]
NotifyStatusChange(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus)=0 | ContentAccess::CAgentManager | [pure virtual]
PrepareHTTPRequestHeaders(RStringPool &aStringPool, RHTTPHeaders &aRequestHeaders) const =0 | ContentAccess::CAgentManager | [pure virtual]
RecognizeFileL(const TDesC &aFileName, const TDesC8 &aBuffer, TDes8 &aFileMimeType, TDes8 &aContentMimeType) const =0 | ContentAccess::CAgentManager | [pure virtual]
RenameDir(const TDesC &aOldName, const TDesC &aNewName) | ContentAccess::CAgentManager | [virtual]
RenameFile(const TDesC &aSource, const TDesC &aDestination)=0 | ContentAccess::CAgentManager | [pure virtual]
RmDir(const TDesC &aPath)=0 | ContentAccess::CAgentManager | [pure virtual]
SetProperty(TAgentProperty aProperty, TInt aValue)=0 | ContentAccess::CAgentManager | [pure virtual]

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CAgentRightsManager Member List

This is the complete list of members for ContentAccess::CAgentRightsManager, including all inherited members.

DeleteAllRightsObjects(const TVirtualPathPtr &aVirtualPath)=0 | ContentAccess::CAgentRightsManager | [pure virtual]
DeleteRightsObject(const CRightsInfo &aRightsInfo)=0 | ContentAccess::CAgentRightsManager | [pure virtual]
GetRightsDataL(const CRightsInfo &aRightsInfo) const =0 | ContentAccess::CAgentRightsManager | [pure virtual]
ListAllRightsL(RStreamablePtrArray< CRightsInfo > &aArray) const =0 | ContentAccess::CAgentRightsManager | [pure virtual]
ListContentL(RStreamablePtrArray< CVirtualPath > &aArray, CRightsInfo &aRightsInfo) const =0 | ContentAccess::CAgentRightsManager | [pure virtual]
ListRightsL(RStreamablePtrArray< CRightsInfo > &aArray, const TDesC &aUri) const =0 | ContentAccess::CAgentRightsManager | [pure virtual]
ListRightsL(RStreamablePtrArray< CRightsInfo > &aArray, TVirtualPathPtr &aVirtualPath) const =0 | ContentAccess::CAgentRightsManager | [pure virtual]
SetProperty(TAgentProperty aProperty, TInt aValue)=0 | ContentAccess::CAgentRightsManager | [pure virtual]

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CContent Member List

This is the complete list of members for ContentAccess::CContent, including all inherited members.

Agent() const | ContentAccess::CContent |
AgentSpecificCommand(TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer) | ContentAccess::CContent |
AgentSpecificCommand(TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus) | ContentAccess::CContent |
CancelNotifyStatusChange(TRequestStatus &aStatus) | ContentAccess::CContent |
CancelNotifyStatusChange(TRequestStatus &aStatus, const TDesC &aUniqueId) | ContentAccess::CContent |
CancelRequestRights(TRequestStatus &aStatus) | ContentAccess::CContent |
CancelRequestRights(TRequestStatus &aStatus, const TDesC &aUniqueId) | ContentAccess::CContent |
CloseContainer() | ContentAccess::CContent |
DisplayInfoL(TDisplayInfo aInfo) const | ContentAccess::CContent |
DisplayInfoL(TDisplayInfo aInfo, const TDesC &aUniqueId) const | ContentAccess::CContent |
GetAttribute(TInt aAttribute, TInt &aValue) const | ContentAccess::CContent |
GetAttribute(TInt aAttribute, TInt &aValue, const TDesC &aUniqueId) const | ContentAccess::CContent |
GetAttributeSet(RAttributeSet &aAttributeSet) const | ContentAccess::CContent |
GetAttributeSet(RAttributeSet &aAttributeSet, const TDesC &aUniqueId) const | ContentAccess::CContent |
GetEmbeddedObjectsL(RStreamablePtrArray< CEmbeddedObject > &aArray) const | ContentAccess::CContent |
GetEmbeddedObjectsL(RStreamablePtrArray< CEmbeddedObject > &aArray, TEmbeddedType aType) const | ContentAccess::CContent |
GetStringAttribute(TInt aAttribute, TDes &aValue) const | ContentAccess::CContent |
GetStringAttribute(TInt aAttribute, TDes &aValue, const TDesC &aUniqueId) const | ContentAccess::CContent |
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet) const | ContentAccess::CContent |
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet, const TDesC &aUniqueId) const | ContentAccess::CContent |
NewL(const TDesC &aURI) | ContentAccess::CContent | [static]
NewL(const TDesC &aURI, TContentShareMode aShareMode) | ContentAccess::CContent | [static]
NewL(RFile &aFile) | ContentAccess::CContent | [static]
NewLC(const TDesC &aURI) | ContentAccess::CContent | [static]
NewLC(const TDesC &aURI, TContentShareMode aShareMode) | ContentAccess::CContent | [static]
NewLC(RFile &aFile) | ContentAccess::CContent | [static]
NotifyStatusChange(TEventMask aMask, TRequestStatus &aStatus) | ContentAccess::CContent |
NotifyStatusChange(TEventMask aMask, TRequestStatus &aStatus, const TDesC &aUniqueId) | ContentAccess::CContent |
OpenContainer(const TDesC &aUniqueId) | ContentAccess::CContent |
OpenContentL(TIntent aIntent) | ContentAccess::CContent |
OpenContentL(TIntent aIntent, const TDesC &aUniqueId) | ContentAccess::CContent |
OpenContentLC(TIntent aIntent) | ContentAccess::CContent |
OpenContentLC(TIntent aIntent, const TDesC &aUniqueId) | ContentAccess::CContent |
RequestRights(TRequestStatus &aStatus) | ContentAccess::CContent |
RequestRights(TRequestStatus &aStatus, const TDesC &aUniqueId) | ContentAccess::CContent |
Search(RStreamablePtrArray< CEmbeddedObject > &aArray, const TDesC8 &aMimeType, TBool aRecursive) | ContentAccess::CContent |
SetProperty(TAgentProperty aProperty, TInt aValue) | ContentAccess::CContent |
~CContent() | ContentAccess::CContent | [virtual]

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CData Member List

This is the complete list of members for ContentAccess::CData, including all inherited members.

DataSizeL(TInt &aSize) | ContentAccess::CData |
EvaluateIntent(TIntent aIntent) | ContentAccess::CData |
ExecuteIntent(TIntent aIntent) | ContentAccess::CData |
GetAttribute(TInt aAttribute, TInt &aValue) const | ContentAccess::CData |
GetAttributeSet(RAttributeSet &aAttributeSet) const | ContentAccess::CData |
GetStringAttribute(TInt aAttribute, TDes &aValue) const | ContentAccess::CData |
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet) const | ContentAccess::CData |
NewL(const TVirtualPathPtr &aVirtualPath, TIntent aIntent, TContentShareMode aShareMode) | ContentAccess::CData | [static]
NewL(const TVirtualPathPtr &aVirtualPath, TContentShareMode aShareMode) | ContentAccess::CData | [static]
NewL(RFile &aFile, const TDesC &aUniqueId, TIntent aIntent) | ContentAccess::CData | [static]
NewL(RFile &aFile, const TDesC &aUniqueId) | ContentAccess::CData | [static]
NewLC(const TVirtualPathPtr &aVirtualPath, TIntent aIntent, TContentShareMode aShareMode) | ContentAccess::CData | [static]
NewLC(const TVirtualPathPtr &aVirtualPath, TContentShareMode aShareMode) | ContentAccess::CData | [static]
NewLC(RFile &aFile, const TDesC &aUniqueId, TIntent aIntent) | ContentAccess::CData | [static]
NewLC(RFile &aFile, const TDesC &aUniqueId) | ContentAccess::CData | [static]
NewLC(TUid aAgentUid, const TVirtualPathPtr &aVirtualPath, TIntent aIntent, TContentShareMode aShareMode) | ContentAccess::CData | [static]
NewLC(TUid aAgentUid, RFile &aFile, const TDesC &aUniqueId, TIntent aIntent) | ContentAccess::CData | [static]
Read(TDes8 &aDes) const | ContentAccess::CData |
Read(TDes8 &aDes, TInt aLength) const | ContentAccess::CData |
Read(TDes8 &aDes, TRequestStatus &aStatus) const | ContentAccess::CData |
Read(TDes8 &aDes, TInt aLength, TRequestStatus &aStatus) const | ContentAccess::CData |
Read(TInt aPos, TDes8 &aDes, TInt aLength, TRequestStatus &aStatus) const | ContentAccess::CData |
Seek(TSeek aMode, TInt &aPos) const | ContentAccess::CData |
SetProperty(TAgentProperty aProperty, TInt aValue) | ContentAccess::CData |
~CData() | ContentAccess::CData | [virtual]

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CDirStreamable Member List

This is the complete list of members for ContentAccess::CDirStreamable, including all inherited members.

AddL(const TEntry &aEntry) | ContentAccess::CDirStreamable |
Count() const | ContentAccess::CDirStreamable |
ExternalizeL(RWriteStream &aStream) const | ContentAccess::CDirStreamable |
NewL() | ContentAccess::CDirStreamable | [static]
NewL(CDir &aDir) | ContentAccess::CDirStreamable | [static]
NewL(RReadStream aStream) | ContentAccess::CDirStreamable | [static]
operator[](TInt aIndex) const | ContentAccess::CDirStreamable |
Sort(TUint aEntrySortKey) | ContentAccess::CDirStreamable |
~CDirStreamable() | ContentAccess::CDirStreamable | [virtual]

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CEmbeddedObject Member List

This is the complete list of members for ContentAccess::CEmbeddedObject, including all inherited members.

ExternalizeL(RWriteStream &aStream) const | ContentAccess::CEmbeddedObject |
MimeType() const | ContentAccess::CEmbeddedObject |
Name() const | ContentAccess::CEmbeddedObject |
NewL(const TDesC &aUniqueId, const TDesC &aName, const TDesC8 &aMimeType, TEmbeddedType aType) | ContentAccess::CEmbeddedObject | [static]
NewL(const TDesC &aUniqueId, const TDesC8 &aMimeType, TEmbeddedType aType) | ContentAccess::CEmbeddedObject | [static]
NewL(RReadStream &aStream) | ContentAccess::CEmbeddedObject | [static]
Type() const | ContentAccess::CEmbeddedObject |
UniqueId() const | ContentAccess::CEmbeddedObject |
~CEmbeddedObject() | ContentAccess::CEmbeddedObject | [virtual]

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CF32AgentUi Member List

This is the complete list of members for ContentAccess::CF32AgentUi, including all inherited members.

ConfirmDeleteL(const TDesC &aFileName)=0 | ContentAccess::CF32AgentUi | [pure virtual]
DisplayInfoL(TInt aInfo, RFile &aFile)=0 | ContentAccess::CF32AgentUi | [pure virtual]
SetProperty(TInt aProperty, TInt aValue)=0 | ContentAccess::CF32AgentUi | [pure virtual]

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CImportFile Member List

This is the complete list of members for ContentAccess::CImportFile, including all inherited members.

Cancel() | ContentAccess::CImportFile |
ContinueWithNewOutputFile(RFile &aFile, const TDesC &aFileName) | ContentAccess::CImportFile |
ContinueWithNewOutputFile(RFile &aFile, const TDesC &aFileName, TRequestStatus &aStatus) | ContentAccess::CImportFile |
CSupplier class | ContentAccess::CImportFile | [friend]
GetImportStatus() const | ContentAccess::CImportFile |
GetSuggestedOutputFileExtension(TDes &aFileExtension) | ContentAccess::CImportFile |
GetSuggestedOutputFileName(TDes &aFileName) | ContentAccess::CImportFile |
OutputFileCountL() const | ContentAccess::CImportFile |
OutputFileL(TInt aIndex) const | ContentAccess::CImportFile |
WriteData(const TDesC8 &aData) | ContentAccess::CImportFile |
WriteData(const TDesC8 &aData, TRequestStatus &aStatus) | ContentAccess::CImportFile |
WriteDataComplete() | ContentAccess::CImportFile |
WriteDataComplete(TRequestStatus &aStatus) | ContentAccess::CImportFile |
~CImportFile() | ContentAccess::CImportFile | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CManager Member List

This is the complete list of members for ContentAccess::CManager, including all inherited members.

AgentSpecificCommand(TAgent &aAgent, TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer) | ContentAccess::CManager |
AgentSpecificCommand(TAgent &aAgent, TInt aCommand, const TDesC8 &aInputBuffer, TDes8 &aOutputBuffer, TRequestStatus &aStatus) | ContentAccess::CManager |
CancelNotifyStatusChange(const TDesC &aURI, TRequestStatus &aStatus) | ContentAccess::CManager |
CopyFile(const TDesC &aSource, const TDesC &aDestination) const | ContentAccess::CManager |
CopyFile(RFile &aSourceFile, const TDesC &aDestination) const | ContentAccess::CManager |
CreateRightsManagerL(TAgent &aAgent) const | ContentAccess::CManager |
DeleteFile(const TDesC &aFileName) const | ContentAccess::CManager |
DisplayInfoL(TDisplayInfo aInfo, const TVirtualPathPtr &aVirtualPath) | ContentAccess::CManager |
DisplayManagementInfoL(TAgent &aAgent) | ContentAccess::CManager |
GetAttribute(TInt aAttribute, TInt &aValue, const TVirtualPathPtr &aVirtualPath) const | ContentAccess::CManager |
GetAttributeSet(RAttributeSet &aAttributeSet, const TVirtualPathPtr &aVirtualPath) const | ContentAccess::CManager |
GetDir(const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList) const | ContentAccess::CManager |
GetDir(const TDesC &aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir *&aEntryList, CDir *&aDirList) const | ContentAccess::CManager |
GetDir(const TDesC &aName, const TUidType &aEntryUid, TUint aEntrySortKey, CDir *&aFileList) const | ContentAccess::CManager |
GetStringAttribute(TInt aAttribute, TDes &aValue, const TVirtualPathPtr &aVirtualPath) const | ContentAccess::CManager |
GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet, const TVirtualPathPtr &aVirtualPath) const | ContentAccess::CManager |
ListAgentsL(RArray< TAgent > &aAgents) | ContentAccess::CManager |
MkDir(const TDesC &aPath) const | ContentAccess::CManager |
MkDirAll(const TDesC &aPath) const | ContentAccess::CManager |
NewL() | ContentAccess::CManager | [static]
NewLC() | ContentAccess::CManager | [static]
NotifyStatusChange(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) | ContentAccess::CManager |
RenameDir(const TDesC &aOldName, const TDesC &aNewName) const | ContentAccess::CManager |
RenameFile(const TDesC &aSource, const TDesC &aDestination) const | ContentAccess::CManager |
RmDir(const TDesC &aPath) const | ContentAccess::CManager |
SetProperty(TAgentProperty aProperty, TInt aValue) | ContentAccess::CManager |
~CManager() | ContentAccess::CManager | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CMetaData Member List

This is the complete list of members for ContentAccess::CMetaData, including all inherited members.

Data() const | ContentAccess::CMetaData |
Data8() const | ContentAccess::CMetaData |
ExternalizeL(RWriteStream &aStream) const | ContentAccess::CMetaData |
Field() const | ContentAccess::CMetaData |
Field8() const | ContentAccess::CMetaData |
NewL(const TDesC8 &aField, const TDesC8 &aData) | ContentAccess::CMetaData | [static]
NewL(const TDesC16 &aField, const TDesC16 &aData) | ContentAccess::CMetaData | [static]
NewL(RReadStream &aStream) | ContentAccess::CMetaData | [static]
~CMetaData() | ContentAccess::CMetaData | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CMetaDataArray Member List

This is the complete list of members for ContentAccess::CMetaDataArray, including all inherited members.

AddL(const TDesC8 &aField, const TDesC8 &aData) | ContentAccess::CMetaDataArray |
AddL(const TDesC &aField, const TDesC &aData) | ContentAccess::CMetaDataArray |
Count() const | ContentAccess::CMetaDataArray |
ExternalizeL(RWriteStream &aStream) const | ContentAccess::CMetaDataArray |
NewL() | ContentAccess::CMetaDataArray | [static]
NewL(RReadStream &aStream) | ContentAccess::CMetaDataArray | [static]
NewLC() | ContentAccess::CMetaDataArray | [static]
operator[](TInt aIndex) const | ContentAccess::CMetaDataArray |
SearchL(const TDesC &aField, TBool aMatchCase=EFalse) const | ContentAccess::CMetaDataArray |
SearchL(const TDesC8 &aField8, TBool aMatchCase=EFalse) const | ContentAccess::CMetaDataArray |
~CMetaDataArray() | ContentAccess::CMetaDataArray | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CRightsInfo Member List

This is the complete list of members for ContentAccess::CRightsInfo, including all inherited members.

Description() const | ContentAccess::CRightsInfo |
ExternalizeL(RWriteStream &aStream) const | ContentAccess::CRightsInfo |
NewL(const TDesC &aDescription, const TDesC &aUniqueId, TInt aRightsTypeMask, TRightsStatus aRightsStatus) | ContentAccess::CRightsInfo | [static]
NewL(RReadStream &aStream) | ContentAccess::CRightsInfo | [static]
RightsStatus() const | ContentAccess::CRightsInfo |
RightsType() const | ContentAccess::CRightsInfo |
UniqueId() const | ContentAccess::CRightsInfo |
~CRightsInfo() | ContentAccess::CRightsInfo | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CRightsManager Member List

This is the complete list of members for ContentAccess::CRightsManager, including all inherited members.

CManager class | ContentAccess::CRightsManager | [friend]
DeleteAllRightsObjects(const TVirtualPathPtr &aVirtualPathPtr) | ContentAccess::CRightsManager |
DeleteRightsObject(const CRightsInfo &aRightsInfo) | ContentAccess::CRightsManager |
GetRightsDataL(const CRightsInfo &aRightsInfo) const | ContentAccess::CRightsManager |
ListAllRightsL(RStreamablePtrArray< CRightsInfo > &aArray) const | ContentAccess::CRightsManager |
ListContentL(RStreamablePtrArray< CVirtualPath > &aArray, CRightsInfo &aRightsInfo) const | ContentAccess::CRightsManager |
ListRightsL(RStreamablePtrArray< CRightsInfo > &aArray, const TDesC &aUri) const | ContentAccess::CRightsManager |
ListRightsL(RStreamablePtrArray< CRightsInfo > &aArray, TVirtualPathPtr &aVirtualPath) const | ContentAccess::CRightsManager |
SetProperty(TAgentProperty aProperty, TInt aValue) | ContentAccess::CRightsManager |
~CRightsManager() | ContentAccess::CRightsManager | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CSupplier Member List

This is the complete list of members for ContentAccess::CSupplier, including all inherited members.

ImportFileL(const TDesC8 &aMimeType, const CMetaDataArray &aImportMetaData, const TDesC &aSuggestedFileName) | ContentAccess::CSupplier |
ImportFileL(const TDesC8 &aMimeType, const CMetaDataArray &aImportMetaData) | ContentAccess::CSupplier |
IsImportSupported(const TDesC8 &aMimeType) | ContentAccess::CSupplier |
NewL() | ContentAccess::CSupplier | [static]
NewLC() | ContentAccess::CSupplier | [static]
PrepareHTTPRequestHeaders(RStringPool &aStringPool, RHTTPHeaders &aRequestHeaders) const | ContentAccess::CSupplier |
SetOutputDirectoryL(const TDesC &aOutputDirectory) | ContentAccess::CSupplier |
~CSupplier() | ContentAccess::CSupplier | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CSupplierOutputFile Member List

This is the complete list of members for ContentAccess::CSupplierOutputFile, including all inherited members.

ExternalizeL(RWriteStream &aStream) const | ContentAccess::CSupplierOutputFile |
FileName() const | ContentAccess::CSupplierOutputFile |
MimeTypeL() | ContentAccess::CSupplierOutputFile |
NewL(const TDesC &aFileName, const TOutputType aOutputType, const TDesC8 &aMimeType) | ContentAccess::CSupplierOutputFile | [static]
NewL(RReadStream &aStream) | ContentAccess::CSupplierOutputFile | [static]
OutputType() const | ContentAccess::CSupplierOutputFile |
~CSupplierOutputFile() | ContentAccess::CSupplierOutputFile | [virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::CVirtualPath Member List

This is the complete list of members for ContentAccess::CVirtualPath, including all inherited members.

ExternalizeL(RWriteStream &aStream) const | ContentAccess::CVirtualPath |
GetCombinedUriUniqueId() | ContentAccess::CVirtualPath |
NewL(const TVirtualPathPtr &aPtr) | ContentAccess::CVirtualPath | [static]
NewL(const TDesC &aCombinedUriUniqueId) | ContentAccess::CVirtualPath | [static]
NewL(const TDesC &aURI, const TDesC &aUniqueId) | ContentAccess::CVirtualPath | [static]
NewL(RReadStream &aStream) | ContentAccess::CVirtualPath | [static]
operator const TVirtualPathPtr &() const | ContentAccess::CVirtualPath | [inline]
UniqueId() const | ContentAccess::CVirtualPath |
URI() const | ContentAccess::CVirtualPath |
~CVirtualPath() | ContentAccess::CVirtualPath | [virtual]

Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::MAgentRightsBase Member List

This is the complete list of members for ContentAccess::MAgentRightsBase, including all inherited members.

ExternalizeL(RWriteStream &aStream) const =0 | ContentAccess::MAgentRightsBase | [pure virtual]
InternalizeL(RReadStream &aStream)=0 | ContentAccess::MAgentRightsBase | [pure virtual]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::RAttributeSet Member List

This is the complete list of members for ContentAccess::RAttributeSet, including all inherited members.

AddL(TInt aAttribute) | ContentAccess::RAttributeSet
Close() | ContentAccess::RAttributeSet
Count() const | ContentAccess::RAttributeSet
ExternalizeL(RWriteStream &aStream) const | ContentAccess::RAttributeSet
GetValue(TInt aAttribute, TInt &aValue) const | ContentAccess::RAttributeSet
InternalizeL(RReadStream &aStream) | ContentAccess::RAttributeSet
operator[](TInt aIndex) const | ContentAccess::RAttributeSet
RAttributeSet() | ContentAccess::RAttributeSet
SetValue(TInt aAttribute, TInt aValue, TInt aErrorCode) | ContentAccess::RAttributeSet

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::RStreamablePtrArray< T > Member List

This is the complete list of members for ContentAccess::RStreamablePtrArray< T >, including all inherited members.

AppendL(T *aElement) | ContentAccess::RStreamablePtrArray< T > | [inline]
Close() | ContentAccess::RStreamablePtrArray< T > | [inline]
Count() const | ContentAccess::RStreamablePtrArray< T > | [inline]
ExternalizeL(RWriteStream &aStream) const | ContentAccess::RStreamablePtrArray< T > | [inline]
InternalizeL(RReadStream &aStream) | ContentAccess::RStreamablePtrArray< T > | [inline]
operator[](TInt aIndex) const | ContentAccess::RStreamablePtrArray< T > | [inline]
RemoveL(TInt aIndex) | ContentAccess::RStreamablePtrArray< T > | [inline]
ResetAndDestroy() | ContentAccess::RStreamablePtrArray< T > | [inline]
RStreamablePtrArray() | ContentAccess::RStreamablePtrArray< T > | [inline]

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::RStringAttributeSet Member List

This is the complete list of members for ContentAccess::RStringAttributeSet, including all inherited members.

AddL(TInt aAttribute) | ContentAccess::RStringAttributeSet
Close() | ContentAccess::RStringAttributeSet
Count() const | ContentAccess::RStringAttributeSet
ExternalizeL(RWriteStream &aStream) const | ContentAccess::RStringAttributeSet
GetValue(TInt aAttribute, TDes &aValue) const | ContentAccess::RStringAttributeSet
GetValueLength(TInt aAttribute) const | ContentAccess::RStringAttributeSet
InternalizeL(RReadStream &aStream) | ContentAccess::RStringAttributeSet
operator[](TInt aIndex) const | ContentAccess::RStringAttributeSet
RStringAttributeSet() | ContentAccess::RStringAttributeSet
SetValue(TInt aAttribute, const TDesC &aValue, TInt aErrorCode) | ContentAccess::RStringAttributeSet

Generated on Wed Feb 28 12:21:11 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::TAgent Member List

This is the complete list of members for ContentAccess::TAgent, including all inherited members.

ImplementationUid() const | ContentAccess::TAgent
Name() const | ContentAccess::TAgent
SetValue(const TDesC &aName, TUid aUid) | ContentAccess::TAgent

Generated on Wed Feb 28 12:21:09 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::TF32AgentUiFactory Member List

This is the complete list of members for ContentAccess::TF32AgentUiFactory, including all inherited members.

CreateF32AgentUiL() ContentAccess::TF32AgentUiFactory [static]

Generated on Wed Feb 28 12:21:10 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Member List

  • Class List
  • Class Hierarchy
  • Class Members

ContentAccess::TVirtualPathPtr Member List

This is the complete list of members for ContentAccess::TVirtualPathPtr, including all inherited members.

CVirtualPath class | ContentAccess::TVirtualPathPtr | [friend]
operator=(const TVirtualPathPtr &aVirtualPath) | ContentAccess::TVirtualPathPtr |
operator=(const TDesC &aCombinedUriUniqueId) | ContentAccess::TVirtualPathPtr |
TVirtualPathPtr(const TDesC &aUri, const TDesC &aUniqueId) | ContentAccess::TVirtualPathPtr |
TVirtualPathPtr(const TDesC &aCombinedUriUniqueId) | ContentAccess::TVirtualPathPtr |
TVirtualPathPtr(const TVirtualPathPtr &aPtr) | ContentAccess::TVirtualPathPtr |
UniqueId() const | ContentAccess::TVirtualPathPtr |
URI() const | ContentAccess::TVirtualPathPtr |

Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: content.h Source File

  • File List
  • File Members

content.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2007. All rights reserved.
00002 // content.h
00011 #ifndef __CONTENT_H__
00012 #define __CONTENT_H__
00013
00014 #include <e32base.h>
00015 #include <f32file.h>
00016
00017 #include <caf/caftypes.h>
00018 #include <caf/agent.h>
00019 #include <caf/streamableptrarray.h>
00020 #include <caf/virtualpathptr.h>
00021
00022 namespace ContentAccess
00023         {
00024         class CAgentResolver;
00025         class CAgentFactory;
00026         class CAgentContent;
00027         class CData;
00028         class CEmbeddedObject;
00029         class RAttributeSet;
00030         class RStringAttributeSet;
00031
00032
00033
00034 #ifndef REMOVE_CAF1
00035         class CAttribute;
00036 #endif
00037
00038
00061         class CContent :  public CBase
00062                 {
00063         public:
00064
00076                 IMPORT_C static CContent* NewLC(const TDesC& aURI);
00077
00089                 IMPORT_C static CContent* NewL(const TDesC& aURI);
00090
00104                 IMPORT_C static CContent* NewLC(const TDesC& aURI, TContentShareMode aShareMode);
00105
00119                 IMPORT_C static CContent* NewL(const TDesC& aURI, TContentShareMode aShareMode);
00120
00135                 IMPORT_C static CContent* NewLC(RFile& aFile);
00136
00151                 IMPORT_C static CContent* NewL(RFile& aFile);
00152
00154                 virtual ~CContent();
00155
00170                 IMPORT_C TInt OpenContainer(const TDesC& aUniqueId);
00171
00184                 IMPORT_C TInt CloseContainer();
00185
00216                 IMPORT_C void GetEmbeddedObjectsL(RStreamablePtrArray<CEmbeddedObject>& aArray) const;
00217
00246                 IMPORT_C void GetEmbeddedObjectsL(RStreamablePtrArray<CEmbeddedObject>& aArray, TEmbeddedType aType) const;
00247
00281                 IMPORT_C TInt Search(RStreamablePtrArray<CEmbeddedObject>& aArray, const TDesC8& aMimeType, TBool aRecursive);
00282
00283
00309                 IMPORT_C TInt GetAttribute(TInt aAttribute, TInt& aValue) const;
00310
00337                 IMPORT_C TInt GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& aUniqueId) const;
00338
00339
00384                 IMPORT_C TInt GetAttributeSet(RAttributeSet& aAttributeSet) const;
00385
00431                 IMPORT_C TInt GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUniqueId) const;
00432
00461                 IMPORT_C TInt GetStringAttribute(TInt aAttribute, TDes& aValue) const;
00462
00492                 IMPORT_C TInt GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUniqueId) const;
00493
00530                 IMPORT_C TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet) const;
00531
00569                 IMPORT_C TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUniqueId) const;
00570
00586                 IMPORT_C TInt AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer);
00587
00607                 IMPORT_C void AgentSpecificCommand(TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus);
00608
00609
00618                 IMPORT_C void NotifyStatusChange(TEventMask aMask, TRequestStatus& aStatus);
00619
00629                 IMPORT_C void NotifyStatusChange(TEventMask aMask, TRequestStatus& aStatus, const TDesC& aUniqueId);
00630
00639                 IMPORT_C TInt CancelNotifyStatusChange(TRequestStatus& aStatus);
00640
00650                 IMPORT_C TInt CancelNotifyStatusChange(TRequestStatus& aStatus, const TDesC& aUniqueId);
00651
00670                 IMPORT_C void RequestRights(TRequestStatus& aStatus);
00671
00692                 IMPORT_C void RequestRights(TRequestStatus& aStatus, const TDesC& aUniqueId);
00693
00694
00703                 IMPORT_C TInt CancelRequestRights(TRequestStatus& aStatus);
00704
00714                 IMPORT_C TInt CancelRequestRights(TRequestStatus& aStatus, const TDesC& aUniqueId);
00715
00730                 IMPORT_C void DisplayInfoL(TDisplayInfo aInfo) const;
00731
00747                 IMPORT_C void DisplayInfoL(TDisplayInfo aInfo, const TDesC& aUniqueId) const;
00748
00749
00766                 IMPORT_C TInt SetProperty(TAgentProperty aProperty, TInt aValue);
00767
00800                 IMPORT_C CData* OpenContentL(TIntent aIntent);
00801
00835                 IMPORT_C CData* OpenContentLC(TIntent aIntent);
00836
00870                 IMPORT_C CData* OpenContentL(TIntent aIntent, const TDesC& aUniqueId);
00871
00872
00906                 IMPORT_C CData* OpenContentLC(TIntent aIntent, const TDesC& aUniqueId);
00907
00908
00913                 IMPORT_C const TAgent& Agent() const;
00914
00915 #ifndef REMOVE_CAF1
00916
00926                 IMPORT_C CData* OpenContentL(TIntent aIntent, TContentShareMode aShareMode);
00927
00934                 IMPORT_C CAttribute* NewAttributeL(TBool aPreloaded);
00935
00942                 IMPORT_C CAttribute* NewAttributeL(TBool aPreloaded, TContentShareMode aShareMode);
00943
00944 #endif  // REMOVE_CAF1
00945
00946         private:
00947                 CContent();
00948                 void ConstructL(RFile& aFile);
00949                 void ConstructL(const TDesC& aURI, TContentShareMode aShareMode);
00950
00951         private:
00952
00954                 CAgentFactory* iAgentFactory;
00955
00959                 CAgentContent* iAgentContent;
00960
00962                 CVirtualPath* iVirtualPath;
00963
00967                 TVirtualPathPtr iDefaultVirtualPath;
00968
00969                 /* Stores the name and UID of the agent
00970                 */
00971                 TAgent iAgent;
00972
00974                 TContentShareMode iShareMode;
00975
00977                 RFile iFile;
00978                 };
00979
00980         } // namespace ContentAccess
00981 #endif /* __CONTENT_H__ */
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: data.h Source File

  • File List
  • File Members

data.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2006. All rights reserved.
00002 // data.h
00003
00012 #ifndef __DATA_H__
00013 #define __DATA_H__
00014
00015 #include <e32base.h>
00016 #include <f32file.h>
00017 #include <caf/caftypes.h>
00018
00019 namespace ContentAccess
00020 {
00021         class CAgentFactory;
00022         class CAgentInfo;
00023         class TVirtualPathPtr;
00024         class CAgentData;
00025         class RAttributeSet;
00026         class RStringAttributeSet;
00027
00028
00038         class CData : public CBase
00039                 {
00040         public:
00060                 IMPORT_C static CData* NewL(const TVirtualPathPtr& aVirtualPath,
00061                                                         TIntent aIntent, TContentShareMode aShareMode);
00062
00081                 IMPORT_C static CData* NewL(const TVirtualPathPtr& aVirtualPath,
00082                                                         TContentShareMode aShareMode);
00083
00084
00104                 IMPORT_C static CData* NewLC(const TVirtualPathPtr& aVirtualPath,
00105                                                         TIntent aIntent, TContentShareMode aShareMode);
00106
00125                 IMPORT_C static CData* NewLC(const TVirtualPathPtr& aVirtualPath,
00126                                                         TContentShareMode aShareMode);
00127
00128
00148                 IMPORT_C static CData* NewL(RFile& aFile, const TDesC& aUniqueId, TIntent aIntent);
00149
00168                 IMPORT_C static CData* NewL(RFile& aFile, const TDesC& aUniqueId);
00169
00189                 IMPORT_C static CData* NewLC(RFile& aFile, const TDesC& aUniqueId, TIntent aIntent);
00190
00209                 IMPORT_C static CData* NewLC(RFile& aFile, const TDesC& aUniqueId);
00210
00234                 static CData* NewLC(TUid aAgentUid, const TVirtualPathPtr& aVirtualPath,
00235                                                         TIntent aIntent, TContentShareMode aShareMode);
00236
00260                 static CData* NewLC(TUid aAgentUid, RFile& aFile, const TDesC& aUniqueId, TIntent aIntent);
00261
00263                 virtual ~CData();
00264
00283                 IMPORT_C TInt Read(TDes8& aDes) const;
00284
00302                 IMPORT_C TInt Read(TDes8& aDes,TInt aLength) const;
00303
00322                 IMPORT_C void Read(TDes8& aDes, TRequestStatus& aStatus) const;
00323
00345                 IMPORT_C void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus) const;
00346
00374                 IMPORT_C TInt Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus) const;
00375
00385                 IMPORT_C void DataSizeL(TInt& aSize);
00386
00422                 IMPORT_C TInt Seek(TSeek aMode,TInt& aPos) const;
00423
00424
00445                 IMPORT_C TInt SetProperty(TAgentProperty aProperty, TInt aValue);
00446
00468                 IMPORT_C TInt EvaluateIntent(TIntent aIntent);
00469
00499                 IMPORT_C TInt ExecuteIntent(TIntent aIntent);
00500
00530                 IMPORT_C TInt GetAttribute(TInt aAttribute, TInt& aValue) const;
00531
00575                 IMPORT_C TInt GetAttributeSet(RAttributeSet& aAttributeSet) const;
00576
00577
00608                 IMPORT_C TInt GetStringAttribute(TInt aAttribute, TDes& aValue) const;
00609
00610
00611
00649                 IMPORT_C TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet) const;
00650
00651 #ifndef REMOVE_CAF1
00652
00657                 IMPORT_C void SetQosL(TQosAttribute aQosAttr, TInt aValue);
00658
00664                 IMPORT_C TBool GetMimeTypeL(TDes8& aMimeType) const;
00665 #endif  // REMOVE_CAF1
00666
00667
00668         private:
00669                 CData();
00670                 void ConstructL(RFile& aFile, const TDesC& aUniqueId, TIntent aIntent);
00671                 void ConstructL(const TVirtualPathPtr& aVirtualPath, TIntent aIntent, TContentShareMode aShareMode);
00672                 void ConstructL(TUid aAgentUid, RFile& aFile, const TDesC& aUniqueId, TIntent aIntent);
00673                 void ConstructL(TUid aAgentUid, const TVirtualPathPtr& aVirtualPath, TIntent aIntent, TContentShareMode aShareMode);
00674
00675                 void ConstructL(RFile& aFile, const TDesC& aUniqueId);
00676                 void ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode);
00677                 void ConstructL(TUid aAgentUid, RFile& aFile, const TDesC& aUniqueId);
00678                 void ConstructL(TUid aAgentUid, const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode);
00679
00680
00681         private:
00682                 // The agent handling this content
00683                 CAgentData* iAgentData;
00684
00685                 // Defacto ECOM session handle
00686                 CAgentFactory* iAgentFactory;
00687
00688                 // Uid of the agent
00689                 TUid iAgentUid;
00690                 };
00691
00692 } // namespace ContentAccess
00693 #endif /* __DATA_H__ */
00694
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: dirstreamable.h Source File

  • File List
  • File Members

dirstreamable.h

Go to the documentation of this file.
00001 // dirstreamable.h
00002 // Copyright Symbian Software Ltd 2004. All rights reserved
00003
00012 #ifndef __DIRSTREAMABLE_H__
00013 #define __DIRSTREAMABLE_H__
00014
00015 #include <f32file.h>
00016 #include <s32strm.h>
00017 #include <caf/caftypes.h>
00018
00019 namespace ContentAccess
00020         {
00032         class CDirStreamable : public CDir
00033                 {
00034         public:
00038                 IMPORT_C static CDirStreamable* NewL();
00039
00047                 IMPORT_C static CDirStreamable* NewL(CDir& aDir);
00048
00054                 IMPORT_C static CDirStreamable* NewL(RReadStream aStream);
00055
00056         public:
00057         virtual ~CDirStreamable();
00058
00062                 IMPORT_C void AddL(const TEntry &aEntry);
00063
00068             IMPORT_C TInt Count() const;
00069
00077                 IMPORT_C const TEntry& operator[](TInt aIndex) const;
00078
00083         IMPORT_C TInt Sort(TUint aEntrySortKey);
00084
00085     public:
00089         IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00090
00091         private:
00092                 CDirStreamable();
00093                 void ConstructL();
00094                 void ConstructL(CDir& aDir);
00095
00096                 void InternalizeL(RReadStream& aStream);
00097                 };
00098         }
00099
00100 #endif
00101
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: EmbeddedObject.h Source File

  • File List
  • File Members

EmbeddedObject.h

Go to the documentation of this file.
00001 // embeddedobject.h
00002 // Copyright (c) Symbian Software Ltd 2004.  All rights reserved.
00003
00012 #ifndef __EMBEDDEDOBJECT_H__
00013 #define __EMBEDDEDOBJECT_H__
00014
00015 #include <apmstd.h>
00016 #include <caf/virtualpath.h>
00017 #include <caf/caftypes.h>
00018
00019 namespace ContentAccess
00020         {
00028         class CEmbeddedObject : public CBase
00029                 {
00030         public:
00039                 IMPORT_C static CEmbeddedObject* NewL(const TDesC& aUniqueId, const TDesC& aName, const TDesC8& aMimeType, TEmbeddedType aType);
00040
00048                 IMPORT_C static CEmbeddedObject* NewL(const TDesC& aUniqueId, const TDesC8& aMimeType, TEmbeddedType aType);
00049
00055                 IMPORT_C static CEmbeddedObject* NewL(RReadStream& aStream);
00056
00058                 virtual ~CEmbeddedObject();
00059
00063                 IMPORT_C const TDesC& UniqueId() const;
00064
00068                 IMPORT_C const TDesC& Name() const;
00069
00073                 IMPORT_C TEmbeddedType Type() const;
00074
00078                 IMPORT_C const TDesC8& MimeType() const;
00079
00084                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00085
00086         private:
00087                 CEmbeddedObject(TEmbeddedType aType);
00088                 void ConstructL(const TDesC& aUniqueId, const TDesC& aName, const TDesC8& aMimeType);
00089
00090                 void InternalizeL(RReadStream& aStream);
00091
00092         private:
00093                 TEmbeddedType iType;
00094                 HBufC* iUniqueId;
00095                 HBufC* iName;
00096                 TBuf8 <KMaxDataTypeLength> iMimeType;
00097                 };
00098
00099         } // namespace ContentAccess
00100
00101 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Examples.dox File Reference

  • File List
  • File Members

Examples.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: f32agentui.h Source File

  • File List
  • File Members

f32agentui.h

Go to the documentation of this file.
00001 // f32agentui.h
00002 // Copyright (C) Symbian Software Ltd 2004-2006.  All rights reserved.
00003
00016 #ifndef __F32AGENTUI_H__
00017 #define __F32AGENTUI_H__
00018
00019 #include <e32base.h>
00020
00021 class RFile;
00022
00023 namespace ContentAccess
00024         {
00028         class CF32AgentUi : public CBase
00029                 {
00030         public:
00045                 virtual TBool ConfirmDeleteL(const TDesC& aFileName) = 0;
00046
00047
00057                 virtual void DisplayInfoL(TInt aInfo, RFile& aFile) = 0;
00058
00077                 virtual TInt SetProperty(TInt aProperty, TInt aValue) = 0;
00078                 };
00079
00083         class TF32AgentUiFactory
00084                 {
00085         public:
00086                 IMPORT_C static CF32AgentUi* CreateF32AgentUiL();
00087                 };
00088         }
00089
00090
00091
00092 #endif // __F32AGENTUI_H__
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members - Functions

  • Class List
  • Class Hierarchy
  • Class Members
  • All
  • Functions
  • Related Functions
  • a
  • c
  • d
  • e
  • f
  • g
  • i
  • l
  • m
  • n
  • o
  • p
  • r
  • s
  • t
  • u
  • w
  • ~

- a -

  • AddL() : ContentAccess::RStringAttributeSet, ContentAccess::CMetaDataArray, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet
  • Agent() : ContentAccess::CContent
  • AgentSpecificCommand() : ContentAccess::CManager, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent
  • AppendL() : ContentAccess::RStreamablePtrArray< T >

- c -

  • Cancel() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • CancelNotifyStatusChange() : ContentAccess::CManager, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent
  • CancelRequestRights() : ContentAccess::CContent, ContentAccess::CAgentContent
  • Close() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::RAttributeSet
  • CloseContainer() : ContentAccess::CContent, ContentAccess::CAgentContent
  • ConfirmDeleteL() : ContentAccess::CF32AgentUi
  • ContinueWithNewOutputFile() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • CopyFile() : ContentAccess::CManager, ContentAccess::CAgentManager
  • Count() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::CMetaDataArray, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet
  • CreateContentBrowserL() : ContentAccess::CAgentFactory
  • CreateDataConsumerL() : ContentAccess::CAgentFactory
  • CreateF32AgentUiL() : ContentAccess::TF32AgentUiFactory
  • CreateImporterL() : ContentAccess::CAgentFactory
  • CreateManagerL() : ContentAccess::CAgentFactory
  • CreateRightsManagerL() : ContentAccess::CManager, ContentAccess::CAgentFactory

- d -

  • Data() : ContentAccess::CMetaData
  • Data8() : ContentAccess::CMetaData
  • DataSizeL() : ContentAccess::CData, ContentAccess::CAgentData
  • DeleteAllRightsObjects() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • DeleteFile() : ContentAccess::CManager, ContentAccess::CAgentManager
  • DeleteRightsObject() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • Description() : ContentAccess::CRightsInfo
  • DisplayInfoL() : ContentAccess::CManager, ContentAccess::CF32AgentUi, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent
  • DisplayManagementInfoL() : ContentAccess::CManager, ContentAccess::CAgentManager

- e -

  • EvaluateIntent() : ContentAccess::CData, ContentAccess::CAgentData
  • ExecuteIntent() : ContentAccess::CData, ContentAccess::CAgentData
  • ExternalizeL() : ContentAccess::CVirtualPath, ContentAccess::CSupplierOutputFile, ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::MAgentRightsBase, ContentAccess::CRightsInfo, ContentAccess::CMetaDataArray, ContentAccess::CMetaData, ContentAccess::CEmbeddedObject, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet

- f -

  • Field() : ContentAccess::CMetaData
  • Field8() : ContentAccess::CMetaData
  • FileName() : ContentAccess::CSupplierOutputFile

- g -

  • GetAttribute() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetAttributeSet() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetCombinedUriUniqueId() : ContentAccess::CVirtualPath
  • GetDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • GetEmbeddedObjectsL() : ContentAccess::CContent, ContentAccess::CAgentContent
  • GetImportStatus() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • GetRightsDataL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • GetStringAttribute() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetStringAttributeSet() : ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • GetSuggestedOutputFileExtension() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • GetSuggestedOutputFileName() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • GetValue() : ContentAccess::RStringAttributeSet, ContentAccess::RAttributeSet
  • GetValueLength() : ContentAccess::RStringAttributeSet

- i -

  • ImplementationUid() : ContentAccess::TAgent
  • ImportFileL() : ContentAccess::CSupplier
  • InternalizeL() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::MAgentRightsBase, ContentAccess::RAttributeSet
  • IsImportSupported() : ContentAccess::CSupplier
  • IsRecognizedL() : ContentAccess::CAgentManager

- l -

  • ListAgentsL() : ContentAccess::CManager
  • ListAllRightsL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • ListContentL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager
  • ListRightsL() : ContentAccess::CRightsManager, ContentAccess::CAgentRightsManager

- m -

  • MimeType() : ContentAccess::CEmbeddedObject
  • MimeTypeL() : ContentAccess::CSupplierOutputFile
  • MkDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • MkDirAll() : ContentAccess::CManager, ContentAccess::CAgentManager

- n -

  • Name() : ContentAccess::CEmbeddedObject, ContentAccess::TAgent
  • NewL() : ContentAccess::CVirtualPath, ContentAccess::CSupplierOutputFile, ContentAccess::CSupplier, ContentAccess::CRightsInfo, ContentAccess::CMetaDataArray, ContentAccess::CMetaData, ContentAccess::CManager, ContentAccess::CEmbeddedObject, ContentAccess::CDirStreamable, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentFactory
  • NewLC() : ContentAccess::CSupplier, ContentAccess::CMetaDataArray, ContentAccess::CManager, ContentAccess::CData, ContentAccess::CContent
  • NotifyStatusChange() : ContentAccess::CManager, ContentAccess::CContent, ContentAccess::CAgentManager, ContentAccess::CAgentContent

- o -

  • OpenContainer() : ContentAccess::CContent, ContentAccess::CAgentContent
  • OpenContentL() : ContentAccess::CContent
  • OpenContentLC() : ContentAccess::CContent
  • operator const TVirtualPathPtr &() : ContentAccess::CVirtualPath
  • operator=() : ContentAccess::TVirtualPathPtr
  • operator[]() : ContentAccess::RStringAttributeSet, ContentAccess::RStreamablePtrArray< T >, ContentAccess::CMetaDataArray, ContentAccess::CDirStreamable, ContentAccess::RAttributeSet
  • OutputFileCountL() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • OutputFileL() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • OutputType() : ContentAccess::CSupplierOutputFile

- p -

  • PrepareHTTPRequestHeaders() : ContentAccess::CSupplier, ContentAccess::CAgentManager

- r -

  • RAttributeSet() : ContentAccess::RAttributeSet
  • Read() : ContentAccess::CData, ContentAccess::CAgentData
  • RecognizeFileL() : ContentAccess::CAgentManager
  • RemoveL() : ContentAccess::RStreamablePtrArray< T >
  • RenameDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • RenameFile() : ContentAccess::CManager, ContentAccess::CAgentManager
  • RequestRights() : ContentAccess::CContent, ContentAccess::CAgentContent
  • ResetAndDestroy() : ContentAccess::RStreamablePtrArray< T >
  • RightsStatus() : ContentAccess::CRightsInfo
  • RightsType() : ContentAccess::CRightsInfo
  • RmDir() : ContentAccess::CManager, ContentAccess::CAgentManager
  • RStreamablePtrArray() : ContentAccess::RStreamablePtrArray< T >
  • RStringAttributeSet() : ContentAccess::RStringAttributeSet

- s -

  • Search() : ContentAccess::CContent, ContentAccess::CAgentContent
  • SearchL() : ContentAccess::CMetaDataArray
  • Seek() : ContentAccess::CData, ContentAccess::CAgentData
  • SetOutputDirectoryL() : ContentAccess::CSupplier
  • SetProperty() : ContentAccess::CRightsManager, ContentAccess::CManager, ContentAccess::CF32AgentUi, ContentAccess::CData, ContentAccess::CContent, ContentAccess::CAgentRightsManager, ContentAccess::CAgentManager, ContentAccess::CAgentContent, ContentAccess::CAgentData
  • SetValue() : ContentAccess::RStringAttributeSet, ContentAccess::RAttributeSet, ContentAccess::TAgent
  • Sort() : ContentAccess::CDirStreamable

- t -

  • TVirtualPathPtr() : ContentAccess::TVirtualPathPtr
  • Type() : ContentAccess::CEmbeddedObject

- u -

  • UniqueId() : ContentAccess::TVirtualPathPtr, ContentAccess::CVirtualPath, ContentAccess::CRightsInfo, ContentAccess::CEmbeddedObject
  • URI() : ContentAccess::TVirtualPathPtr, ContentAccess::CVirtualPath

- w -

  • WriteData() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile
  • WriteDataComplete() : ContentAccess::CImportFile, ContentAccess::CAgentImportFile

- ~ -

  • ~CAgentFactory() : ContentAccess::CAgentFactory
  • ~CContent() : ContentAccess::CContent
  • ~CData() : ContentAccess::CData
  • ~CDirStreamable() : ContentAccess::CDirStreamable
  • ~CEmbeddedObject() : ContentAccess::CEmbeddedObject
  • ~CImportFile() : ContentAccess::CImportFile
  • ~CManager() : ContentAccess::CManager
  • ~CMetaData() : ContentAccess::CMetaData
  • ~CMetaDataArray() : ContentAccess::CMetaDataArray
  • ~CRightsInfo() : ContentAccess::CRightsInfo
  • ~CRightsManager() : ContentAccess::CRightsManager
  • ~CSupplier() : ContentAccess::CSupplier
  • ~CSupplierOutputFile() : ContentAccess::CSupplierOutputFile
  • ~CVirtualPath() : ContentAccess::CVirtualPath
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members - Related Functions

  • Class List
  • Class Hierarchy
  • Class Members
  • All
  • Functions
  • Related Functions

  • CManager : ContentAccess::CRightsManager
  • CSupplier : ContentAccess::CImportFile
  • CVirtualPath : ContentAccess::TVirtualPathPtr
Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator

  • TAgentProperty : caftypes.h
  • TAttribute : caftypes.h
  • TCafPanics : cafpanic.h
  • TContentShareMode : caftypes.h
  • TDisplayInfo : caftypes.h
  • TEmbeddedType : caftypes.h
  • TEventMask : caftypes.h
  • TImportStatus : caftypes.h
  • TIntent : caftypes.h
  • TOutputType : caftypes.h
  • TRightsStatus : caftypes.h
  • TRightsTypeMask : caftypes.h
  • TStringAttribute : caftypes.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • e

- e -

  • EAgentPropertyAgentUI : caftypes.h
  • EAgentPropertyBufferSize : caftypes.h
  • EAgentPropertyMultipleSequence : caftypes.h
  • EAgentSpecificAttributeBase : caftypes.h
  • EAgentSpecificObject : caftypes.h
  • EAgentSpecificStringAttributeBase : caftypes.h
  • EAuthor : caftypes.h
  • ECafPanicContentIteratorThreadPanic : cafpanic.h
  • ECafPanicContentIteratorUnknownRequest : cafpanic.h
  • ECafPanicDuplicateF32Agent : cafpanic.h
  • ECafPanicF32AgentImportNotSupported : cafpanic.h
  • ECafPanicF32AgentManagementInfoNotSupported : cafpanic.h
  • ECafPanicF32AgentPrepareHTTPHeadersNotSupported : cafpanic.h
  • ECafPanicF32AgentRightManagerNotSupported : cafpanic.h
  • ECafPanicNoF32Agent : cafpanic.h
  • ECanAutomaticConsume : caftypes.h
  • ECanExecute : caftypes.h
  • ECanMove : caftypes.h
  • ECanPlay : caftypes.h
  • ECanPrint : caftypes.h
  • ECanRename : caftypes.h
  • ECanRewind : caftypes.h
  • ECanView : caftypes.h
  • EComplete : caftypes.h
  • EContainerObject : caftypes.h
  • EContent : caftypes.h
  • EContentCDataInUse : caftypes.h
  • EContentID : caftypes.h
  • EContentLocation : caftypes.h
  • EContentObject : caftypes.h
  • EContentShareExclusive : caftypes.h
  • EContentShareReadOnly : caftypes.h
  • EContentShareReadWrite : caftypes.h
  • EContentURI : caftypes.h
  • EContentVersion : caftypes.h
  • EContinue : caftypes.h
  • ECopyPaste : caftypes.h
  • EDescription : caftypes.h
  • EExecute : caftypes.h
  • EFailed : caftypes.h
  • EFileAndRights : caftypes.h
  • EFileProperties : caftypes.h
  • EIconURI : caftypes.h
  • EInfoURL : caftypes.h
  • EInProgress : caftypes.h
  • EInstall : caftypes.h
  • EIsCopyable : caftypes.h
  • EIsForwardable : caftypes.h
  • EIsModifyable : caftypes.h
  • EIsProtected : caftypes.h
  • EMimeType : caftypes.h
  • EPause : caftypes.h
  • EPeek : caftypes.h
  • EPendingRightsETA : caftypes.h
  • EPlay : caftypes.h
  • EPreviewAvailable : caftypes.h
  • EPreviewURI : caftypes.h
  • EPrint : caftypes.h
  • EReceipt : caftypes.h
  • ERights : caftypes.h
  • ERightsAvailable : caftypes.h
  • ERightsConsumable : caftypes.h
  • ERightsExpired : caftypes.h
  • ERightsHaveExpired : caftypes.h
  • ERightsIssuerURI : caftypes.h
  • ERightsNone : caftypes.h
  • ERightsPending : caftypes.h
  • ERightsStateless : caftypes.h
  • ERightsStatusExpired : caftypes.h
  • ERightsStatusNone : caftypes.h
  • ERightsStatusPending : caftypes.h
  • ERightsStatusValid : caftypes.h
  • ERightsTypeConsumable : caftypes.h
  • ERightsTypeStateless : caftypes.h
  • EStop : caftypes.h
  • ETitle : caftypes.h
  • ETransactionID : caftypes.h
  • EUnknown : caftypes.h
  • EUnsupportedMedia : caftypes.h
  • EView : caftypes.h
  • EWaitingForNewOutputFile : caftypes.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator

  • _LIT() : virtualpathptr.h, caftypes.h, cafpanic.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator

  • KCAAgentInterfaceUid : agentfactory.h
  • KCafLoadPostProductionAgents : patchdata.h
  • KErrCA_LowerLimit : caferr.h
  • KErrCA_UpperLimit : caferr.h
  • KErrCACorruptContent : caferr.h
  • KErrCACorruptRights : caferr.h
  • KErrCANewFileHandleRequired : caferr.h
  • KErrCANoAgent : caferr.h
  • KErrCANoPermission : caferr.h
  • KErrCANoRights : caferr.h
  • KErrCANotSupported : caferr.h
  • KErrCAOutOfRange : caferr.h
  • KErrCAPendingRights : caferr.h
  • KErrCASizeNotDetermined : caferr.h
  • KMaxAgentNameLength : agent.h
  • KMaxCafContentName : caftypes.h
  • KMaxCafUniqueId : caftypes.h
  • KMaxSIDLength : agent.h
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Graph Legend

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };

/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };

/* Class not documented with doxygen comments */
class Undocumented { };

/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };

/*! A template class */
template<class T> class Templ { };

/*! Class that is inherited using protected inheritance */
class ProtectedBase { };

/*! Class that is inherited using private inheritance */
class PrivateBase { };

/*! Class that is used by the Inherited class */
class Used { };

/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
                  protected ProtectedBase,
                  private PrivateBase,
                  public Undocumented
                  public Templ<int>
{
  private:
    Used *m_usedClass;
};
If the MAX_DOT_GRAPH_HEIGHT tag in the configuration file is set to 240 this will result in the following graph:

The boxes in the above graph have the following meaning:

  • A filled black box represents the struct or class for which the graph is generated.
  • A box with a black border denotes a documented struct or class.
  • A box with a grey border denotes an undocumented struct or class.
  • A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
The arrows have the following meaning:
  • A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • A dark green arrow is used for protected inheritance.
  • A dark red arrow is used for private inheritance.
  • A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: HowToAgentConfiguration.dox File Reference

  • File List
  • File Members

HowToAgentConfiguration.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: HowToContentAPI.dox File Reference

  • File List
  • File Members

HowToContentAPI.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: HowToManageAgents.dox File Reference

  • File List
  • File Members

HowToManageAgents.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: HowToManageFiles.dox File Reference

  • File List
  • File Members

HowToManageFiles.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: HowToSupplierAPI.dox File Reference

  • File List
  • File Members

HowToSupplierAPI.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: importfile.h Source File

  • File List
  • File Members

importfile.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2007. All rights reserved.
00002 // importfile.h
00003
00012 #ifndef __IMPORTFILE_H__
00013 #define __IMPORTFILE_H__
00014
00015 #include <e32base.h>
00016 #include <f32file.h>
00017 #include <caf/caftypes.h>
00018
00019 namespace ContentAccess
00020         {
00021         class CAgentFactory;
00022         class CSupplierOutputFile;
00023         class CMetaDataArray;
00024         class CAgentSupplier;
00025         class CAgentImportFile;
00026         class CSupplier;
00027         class CAgentInfo;
00028         class CAgentFactory;
00029
00045         class CImportFile: public CBase
00046                 {
00047                 friend class CSupplier;
00048
00049         public:
00052                 virtual ~CImportFile();
00053
00065                 IMPORT_C TInt WriteData(const TDesC8& aData);
00066
00085                 IMPORT_C void WriteData(const TDesC8& aData, TRequestStatus& aStatus);
00086
00097                 IMPORT_C TInt WriteDataComplete();
00098
00099
00116                 IMPORT_C void WriteDataComplete(TRequestStatus& aStatus);
00117
00121                 IMPORT_C TInt OutputFileCountL() const;
00122
00139                 IMPORT_C CSupplierOutputFile& OutputFileL(TInt aIndex) const;
00140
00150                 IMPORT_C TImportStatus GetImportStatus() const;
00151
00165                 IMPORT_C TInt GetSuggestedOutputFileExtension(TDes& aFileExtension);
00166
00179                 IMPORT_C TInt GetSuggestedOutputFileName(TDes& aFileName);
00180
00194                 IMPORT_C TInt ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName);
00195
00212                 IMPORT_C void ContinueWithNewOutputFile(RFile& aFile, const TDesC& aFileName, TRequestStatus& aStatus);
00213
00216                 IMPORT_C void Cancel();
00217
00218         private:
00219                 CImportFile();
00220
00221                 static CImportFile* NewL(TUid aAgentUid, const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName);
00222                 void ConstructL(TUid aAgentUid, const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData, const TDesC& aOutputDirectory, const TDesC& aSuggestedFileName);
00223
00224                 static CImportFile* NewL(TUid aAgentUid, const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData);
00225                 void ConstructL(TUid aAgentUid, const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData);
00226
00227         private:
00228                 // Agent within CAF used to import the file
00229                 CAgentImportFile* iAgentImportFile;
00230
00231                 // Agent factory, de-facto ECOM session handle
00232                 CAgentFactory* iAgentFactory;
00233                 };
00234         }
00235 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: licensees.dox File Reference

  • File List
  • File Members

licensees.dox File Reference

Generated on Wed Feb 28 12:21:06 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: manager.h Source File

  • File List
  • File Members

manager.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2006. All rights reserved.
00002 // manager.h
00003
00012 #ifndef __MANAGER_H__
00013 #define __MANAGER_H__
00014
00015 #include <e32base.h>
00016 #include <f32file.h>
00017 #include <caf/caftypes.h>
00018 #include <caf/agent.h>
00019 class CDir;
00020
00021 namespace ContentAccess
00022         {
00023         class CAgentResolver;
00024         class CRightsManager;
00025         class RAttributeSet;
00026         class RStringAttributeSet;
00027         class CDirStreamable;
00028         class CAgentManager;
00029         class TVirtualPathPtr;
00030
00031
00038         class CManager : public CBase
00039                 {
00040         public:
00041
00046                 IMPORT_C static CManager* NewL();
00047
00052                 IMPORT_C static CManager* NewLC();
00053
00056                 virtual ~CManager();
00057
00058
00083                 IMPORT_C TInt DeleteFile(const TDesC &aFileName) const;
00084
00102                 IMPORT_C TInt CopyFile(const TDesC& aSource, const TDesC& aDestination) const;
00103
00121                 IMPORT_C TInt CopyFile(RFile& aSourceFile, const TDesC &aDestination) const;
00122
00140                 IMPORT_C TInt RenameFile(const TDesC& aSource, const TDesC& aDestination) const;
00141
00158                 IMPORT_C TInt MkDir(const TDesC& aPath) const;
00159
00175                 IMPORT_C TInt MkDirAll(const TDesC& aPath) const;
00176
00193                 IMPORT_C TInt RmDir(const TDesC& aPath) const;
00194
00195
00212                 IMPORT_C TInt RenameDir(const TDesC& aOldName, const TDesC& aNewName) const;
00213
00214
00241                 IMPORT_C TInt GetDir(const TDesC& aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir*& aEntryList) const;
00242
00270                 IMPORT_C TInt GetDir(const TDesC& aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir*& aEntryList, CDir*& aDirList) const;
00271
00297                 IMPORT_C TInt GetDir(const TDesC& aName, const TUidType& aEntryUid, TUint aEntrySortKey, CDir*& aFileList) const;
00298
00327                 IMPORT_C TInt GetAttribute(TInt aAttribute, TInt& aValue, const TVirtualPathPtr& aVirtualPath) const;
00328
00385                 IMPORT_C TInt GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const;
00386
00415                 IMPORT_C TInt GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const;
00416
00456                 IMPORT_C TInt GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const;
00457
00467                 IMPORT_C void NotifyStatusChange(const TDesC& aURI, TEventMask aMask, TRequestStatus& aStatus);
00468
00477                 IMPORT_C TInt CancelNotifyStatusChange(const TDesC& aURI, TRequestStatus& aStatus);
00478
00494                 IMPORT_C TInt SetProperty(TAgentProperty aProperty, TInt aValue);
00495
00511                 IMPORT_C void DisplayInfoL(TDisplayInfo aInfo, const TVirtualPathPtr& aVirtualPath);
00512
00513
00521                 IMPORT_C void ListAgentsL(RArray <TAgent>& aAgents);
00522
00538                 IMPORT_C  TInt AgentSpecificCommand(TAgent& aAgent, TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer);
00539
00558                 IMPORT_C void AgentSpecificCommand(TAgent& aAgent, TInt aCommand, const TDesC8& aInputBuffer, TDes8& aOutputBuffer, TRequestStatus& aStatus);
00559
00570                 IMPORT_C void DisplayManagementInfoL(TAgent& aAgent);
00571
00590                 IMPORT_C CRightsManager* CreateRightsManagerL(TAgent& aAgent) const;
00591
00592 #ifndef REMOVE_CAF1
00593
00597                 IMPORT_C static void DeleteFileL (const TDesC &aFileName);
00598 #endif // REMOVE_CAF1
00599
00600         private:
00601                 CManager();
00602                 void ConstructL();
00603
00607                 void GetListOfAgentPrivateDirectoriesL(CDir *&aDir) const;
00608
00609                 // Implemenetation functions for public exports
00610                 void DoDeleteFileL(const TDesC &aFileName) const;
00611                 void DoCopyFileL(const TDesC& aSource, const TDesC& aDestination) const;
00612                 void DoCopyFileL(RFile& aSourceFile, const TDesC &aDestination) const;
00613                 void DoRenameFileL(const TDesC& aSource, const TDesC& aDestination) const;
00614                 void DoMkDirL(const TDesC &aPath) const;
00615                 void DoMkDirAllL(const TDesC &aPath) const;
00616                 void DoRmDirL(const TDesC &aPath) const;
00617                 void DoRenameDirL(const TDesC &aOldName, const TDesC& aNewName) const;
00618                 void DoGetDirL(const TDesC& aName, TUint aEntryAttMask, TUint aEntrySortKey, CDir*& aEntryList) const;
00619                 void DoGetDirL(const TDesC& aName, TUint aEntryAttMask, TUint anEntrySortKey, CDir*& aEntryList, CDir*& aDirList) const;
00620                 void DoGetDirL(const TDesC &aName, const TUidType &aEntryUid, TUint aEntrySortKey, CDir *&aFileList) const;
00621                 void DoGetAttributeL(TInt aAttribute, TInt& aValue, const TVirtualPathPtr& aVirtualPath) const;
00622                 void DoGetAttributeSetL(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const;
00623                 void DoGetStringAttributeL(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const;
00624                 void DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const;
00625                 void DoNotifyStatusChangeL(const TDesC& aURI, TEventMask aMask, TRequestStatus& aStatus);
00626                 void DoCancelNotifyStatusChangeL(const TDesC& aURI, TRequestStatus& aStatus);
00627                 void DoSetPropertyL(TAgentProperty aProperty, TInt aValue);
00628         private:
00629                 // Holds instances of all the agents
00630                 CAgentResolver* iResolver;
00631                 };
00632
00633         } // namespace ContentAccess
00634
00635 #endif /* __MANAGER_H__ */
00636
00637
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: metadata.h Source File

  • File List
  • File Members

metadata.h

Go to the documentation of this file.
00001 // metadata.h
00002 // Copyright (c) Symbian Software Ltd 2004. All rights reserved.
00003
00012 #ifndef __CAF_METADATA_H__
00013 #define __CAF_METADATA_H__
00014
00015 #include <e32base.h>
00016 #include <f32file.h>
00017
00018 class RReadStream;
00019 class RWriteStream;
00020
00021 namespace ContentAccess
00022         {
00046         class CMetaData : public CBase
00047                 {
00048         public:
00058                 static CMetaData* NewL(const TDesC8& aField, const TDesC8& aData);
00068                 static CMetaData* NewL(const TDesC16& aField, const TDesC16& aData);
00069
00078                 static CMetaData* NewL(RReadStream& aStream);
00079
00082                 virtual ~CMetaData();
00083
00087                 IMPORT_C const TDesC& Field() const;
00088
00092                 IMPORT_C const TDesC& Data() const;
00093
00097                 IMPORT_C const TDesC8& Field8() const;
00098
00102                 IMPORT_C const TDesC8& Data8() const;
00103
00110                 void ExternalizeL(RWriteStream& aStream) const;
00111
00112         private:
00113                 CMetaData(TBool aUnicode);
00114                 void ConstructL(const TDesC8& aField, const TDesC8& aData);
00115                 void ConstructL(const TDesC16& aField, const TDesC16& aData);
00116
00119                 void InternalizeL(RReadStream& aStream);
00120
00121         private:
00122                 HBufC* iField;
00123                 HBufC* iData;
00124                 HBufC8* iField8;
00125                 HBufC8* iData8;
00126                 TBool iUnicode;
00127                 };
00128         }
00129
00130 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: metadataarray.h Source File

  • File List
  • File Members

metadataarray.h

Go to the documentation of this file.
00001 // metadataarray.cpp
00002 // Copyright (c) Symbian Software Ltd 2004-2005. All rights reserved.
00003
00012 #ifndef __CAF_METADATAARRAY_H__
00013 #define __CAF_METADATAARRAY_H__
00014
00015 #include <e32base.h>
00016 #include <f32file.h>
00017
00018 class RWriteStream;
00019 class RReadStream;
00020
00021 namespace ContentAccess
00022         {
00023         class CMetaData;
00024
00038         class CMetaDataArray : public CBase
00039                 {
00040         public:
00041
00042                 IMPORT_C static CMetaDataArray* NewL();
00043                 IMPORT_C static CMetaDataArray* NewLC();
00044
00049                 IMPORT_C static CMetaDataArray* NewL(RReadStream& aStream);
00050
00052                 virtual ~CMetaDataArray();
00053
00058                 IMPORT_C void AddL(const TDesC8& aField, const TDesC8& aData);
00059
00064                 IMPORT_C void AddL(const TDesC& aField, const TDesC& aData);
00065
00071                 IMPORT_C const CMetaData& operator [] (TInt aIndex) const;
00072
00075                 IMPORT_C TInt Count() const;
00076
00083                 IMPORT_C const TDesC& SearchL(const TDesC& aField, TBool aMatchCase = EFalse) const;
00084
00091                 IMPORT_C const TDesC8& SearchL(const TDesC8& aField8, TBool aMatchCase = EFalse) const;
00092
00097                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00098
00099         private:
00100                 CMetaDataArray();
00101                 void InternalizeL(RReadStream& aStream);
00102         private:
00103
00104                 RPointerArray <CMetaData> iArray;
00105
00106                 // Length of the longest data item in the array
00107                 TInt iMaxFieldLength;
00108                 };
00109         }
00110
00111 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • Namespace List
  • Namespace Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator

  • TAgentProperty : ContentAccess
  • TAttribute : ContentAccess
  • TContentShareMode : ContentAccess
  • TDisplayInfo : ContentAccess
  • TEmbeddedType : ContentAccess
  • TEventMask : ContentAccess
  • TImportStatus : ContentAccess
  • TIntent : ContentAccess
  • TOutputType : ContentAccess
  • TRightsStatus : ContentAccess
  • TRightsTypeMask : ContentAccess
  • TStringAttribute : ContentAccess
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • Namespace List
  • Namespace Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • e

- e -

  • EAgentPropertyAgentUI : ContentAccess
  • EAgentPropertyBufferSize : ContentAccess
  • EAgentPropertyMultipleSequence : ContentAccess
  • EAgentSpecificAttributeBase : ContentAccess
  • EAgentSpecificObject : ContentAccess
  • EAgentSpecificStringAttributeBase : ContentAccess
  • EAuthor : ContentAccess
  • ECanAutomaticConsume : ContentAccess
  • ECanExecute : ContentAccess
  • ECanMove : ContentAccess
  • ECanPlay : ContentAccess
  • ECanPrint : ContentAccess
  • ECanRename : ContentAccess
  • ECanRewind : ContentAccess
  • ECanView : ContentAccess
  • EComplete : ContentAccess
  • EContainerObject : ContentAccess
  • EContent : ContentAccess
  • EContentCDataInUse : ContentAccess
  • EContentID : ContentAccess
  • EContentLocation : ContentAccess
  • EContentObject : ContentAccess
  • EContentShareExclusive : ContentAccess
  • EContentShareReadOnly : ContentAccess
  • EContentShareReadWrite : ContentAccess
  • EContentURI : ContentAccess
  • EContentVersion : ContentAccess
  • EContinue : ContentAccess
  • ECopyPaste : ContentAccess
  • EDescription : ContentAccess
  • EExecute : ContentAccess
  • EFailed : ContentAccess
  • EFileAndRights : ContentAccess
  • EFileProperties : ContentAccess
  • EIconURI : ContentAccess
  • EInfoURL : ContentAccess
  • EInProgress : ContentAccess
  • EInstall : ContentAccess
  • EIsCopyable : ContentAccess
  • EIsForwardable : ContentAccess
  • EIsModifyable : ContentAccess
  • EIsProtected : ContentAccess
  • EMimeType : ContentAccess
  • EPause : ContentAccess
  • EPeek : ContentAccess
  • EPendingRightsETA : ContentAccess
  • EPlay : ContentAccess
  • EPreviewAvailable : ContentAccess
  • EPreviewURI : ContentAccess
  • EPrint : ContentAccess
  • EReceipt : ContentAccess
  • ERights : ContentAccess
  • ERightsAvailable : ContentAccess
  • ERightsConsumable : ContentAccess
  • ERightsExpired : ContentAccess
  • ERightsHaveExpired : ContentAccess
  • ERightsIssuerURI : ContentAccess
  • ERightsNone : ContentAccess
  • ERightsPending : ContentAccess
  • ERightsStateless : ContentAccess
  • ERightsStatusExpired : ContentAccess
  • ERightsStatusNone : ContentAccess
  • ERightsStatusPending : ContentAccess
  • ERightsStatusValid : ContentAccess
  • ERightsTypeConsumable : ContentAccess
  • ERightsTypeStateless : ContentAccess
  • EStop : ContentAccess
  • ETitle : ContentAccess
  • ETransactionID : ContentAccess
  • EUnknown : ContentAccess
  • EUnsupportedMedia : ContentAccess
  • EView : ContentAccess
  • EWaitingForNewOutputFile : ContentAccess
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • Namespace List
  • Namespace Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator

  • _LIT() : ContentAccess
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: Class Members

  • Namespace List
  • Namespace Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator

  • KCAAgentInterfaceUid : ContentAccess
  • KMaxCafContentName : ContentAccess
  • KMaxCafUniqueId : ContentAccess
Generated on Wed Feb 28 12:21:12 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: NavigatingArchiveFiles.dox File Reference

  • File List
  • File Members

NavigatingArchiveFiles.dox File Reference

Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: patchdata.h Source File

  • File List
  • File Members

patchdata.h

Go to the documentation of this file.
00001 // patchdata.h
00002 // Copyright (c) 2007 Symbian Software Ltd. All rights reserved.
00003 //
00004
00005 #include <e32base.h>
00006
00021 IMPORT_C extern const TUint8 KCafLoadPostProductionAgents;
00022
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: ReleaseNotes.dox File Reference

  • File List
  • File Members

ReleaseNotes.dox File Reference

Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: rightsinfo.h Source File

  • File List
  • File Members

rightsinfo.h

Go to the documentation of this file.
00001 // rightsInfo.h
00002 // Copyright (c) Symbian Software Ltd 2004. All rights reserved.
00003
00012 #ifndef __RIGHTSINFO_H__
00013 #define __RIGHTSINFO_H__
00014
00015 #include <e32base.h>
00016 #include <caf/caftypes.h>
00017
00018 class RWriteStream;
00019 class RReadStream;
00020
00021 namespace ContentAccess
00022 {
00023
00030         class CRightsInfo : public CBase
00031                 {
00032         public:
00033
00042                 IMPORT_C static CRightsInfo* NewL(const TDesC& aDescription, const TDesC& aUniqueId, TInt aRightsTypeMask, TRightsStatus aRightsStatus);
00043
00045                 IMPORT_C static CRightsInfo* NewL(RReadStream& aStream);
00046
00047                 virtual ~CRightsInfo();
00048
00052                 IMPORT_C const TDesC& Description() const;
00053
00057                 IMPORT_C const TDesC& UniqueId() const;
00058
00065                 IMPORT_C TInt RightsType() const;
00066
00073                 IMPORT_C TRightsStatus RightsStatus() const;
00074
00079                 IMPORT_C void ExternalizeL(RWriteStream &aStream) const;
00080
00081         private:
00082                 CRightsInfo();
00083
00084                 CRightsInfo(TInt aRightsType, TRightsStatus aRightsStatus);
00085                 void ConstructL(const TDesC& aDescription, const TDesC& aUniqueId);
00086
00087                 void InternalizeL(RReadStream& aStream);
00088
00089         private:
00090
00091                 HBufC* iDescription;
00092                 HBufC* iUniqueId;
00093
00094                 TInt iRightsType;
00095                 TRightsStatus iRightsStatus;
00096                 };
00097
00109         class MAgentRightsBase
00110                 {
00111         public:
00112                 virtual void ExternalizeL(RWriteStream& aStream) const = 0;
00113                 virtual void InternalizeL(RReadStream& aStream) = 0;
00114                 };
00115         }
00116
00117 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: rightsmanager.h Source File

  • File List
  • File Members

rightsmanager.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2006. All rights reserved.
00002 // rightsmanager.h
00003
00012 #ifndef __RIGHTSMANAGER_H__
00013 #define __RIGHTSMANAGER_H__
00014
00015 #include <e32std.h>
00016 #include <caf/caftypes.h>
00017 #include <caf/streamableptrarray.h>
00018
00019 namespace ContentAccess
00020         {
00021
00022         class TVirtualPathPtr;
00023         class CVirtualPath;
00024         class CRightsInfo;
00025         class CAgentInfo;
00026         class CAgentFactory;
00027         class CAgentRightsManager;
00028         class MAgentRightsBase;
00029
00036         class CRightsManager : public CBase
00037                 {
00038         public:
00039                 virtual ~CRightsManager();
00040
00041         public:
00050                 IMPORT_C void ListAllRightsL(RStreamablePtrArray<CRightsInfo>& aArray) const;
00051
00061                 IMPORT_C void ListRightsL(RStreamablePtrArray<CRightsInfo>& aArray, const TDesC& aUri) const;
00062
00072                 IMPORT_C void ListRightsL(RStreamablePtrArray<CRightsInfo>& aArray, TVirtualPathPtr& aVirtualPath) const;
00073
00083                 IMPORT_C void ListContentL(RStreamablePtrArray<CVirtualPath>& aArray, CRightsInfo& aRightsInfo) const;
00084
00094                 IMPORT_C MAgentRightsBase* GetRightsDataL(const CRightsInfo& aRightsInfo) const;
00095
00110                 IMPORT_C TInt DeleteRightsObject(const CRightsInfo& aRightsInfo);
00111
00125                 IMPORT_C TInt DeleteAllRightsObjects(const TVirtualPathPtr& aVirtualPathPtr);
00126
00127
00141                 IMPORT_C TInt SetProperty(TAgentProperty aProperty, TInt aValue);
00142
00143         private:
00144
00145                 friend class CManager;
00146
00148                 static CRightsManager* NewL(TUid aUid);
00149
00151                 CRightsManager();
00152
00154                 virtual void ConstructL(TUid aUid);
00155
00156         private:
00157                 CAgentFactory* iAgentFactory;
00158                 CAgentRightsManager* iAgentRightsManager;
00159                 };
00160         }
00161 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: RightsManagerAPI.dox File Reference

  • File List
  • File Members

RightsManagerAPI.dox File Reference

Generated on Wed Feb 28 12:21:07 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: StreamablePtrArray.h Source File

  • File List
  • File Members

StreamablePtrArray.h

Go to the documentation of this file.
00001 // streamableptrarray.h
00002 // Copyright (c) Symbian Software Ltd 2004-2006.  All rights reserved.
00003
00012 #ifndef __STREAMABLEPTRARRAY_H__
00013 #define __STREAMABLEPTRARRAY_H__
00014
00015 #include <e32base.h>
00016 #include <s32strm.h>
00017
00018 namespace ContentAccess
00019         {
00032         template <class T>
00033                 class RStreamablePtrArray
00034                 {
00035         public:
00037                 inline RStreamablePtrArray();
00038
00043                 inline void Close();
00044
00050                 inline void AppendL(T* aElement);
00051
00053                 inline TInt Count() const;
00054
00060                 inline T* operator [] (TInt aIndex) const;
00061
00063                 inline void ResetAndDestroy();
00064
00066                 inline void InternalizeL(RReadStream& aStream);
00067
00069                 inline void ExternalizeL(RWriteStream& aStream) const;
00070
00074                 inline void RemoveL(TInt aIndex);
00075
00076         private:
00077                 RPointerArray <T> iArray;
00078                 };
00079         }
00080
00081 // include inline function definitions
00082 #include <caf/streamableptrarray.inl>
00083
00084 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: stringattributeset.h Source File

  • File List
  • File Members

stringattributeset.h

Go to the documentation of this file.
00001 // stringattributeset.h
00002 // Copyright (c) Symbian Software Ltd 2004. All rights reserved.
00003
00012 #ifndef __STRINGATTRIBUTESET_H__
00013 #define __STRINGATTRIBUTESET_H__
00014
00015 #include <e32base.h>
00016 #include <caf/caftypes.h>
00017
00018 class RReadStream;
00019 class RWriteStream;
00020
00021 namespace ContentAccess
00022         {
00023         class CStringAttribute;
00024
00037         class RStringAttributeSet
00038                 {
00039         public:
00040                 IMPORT_C RStringAttributeSet();
00041
00046                 IMPORT_C void Close();
00047
00053                 IMPORT_C void AddL(TInt aAttribute);
00054
00062                 IMPORT_C TInt GetValue(TInt aAttribute, TDes& aValue) const;
00063
00064
00069                 IMPORT_C TInt GetValueLength(TInt aAttribute) const;
00070
00071
00078                 IMPORT_C TInt SetValue(TInt aAttribute, const TDesC& aValue, TInt aErrorCode);
00079
00080
00085                 IMPORT_C TInt operator [] (TInt aIndex) const;
00086
00090                 IMPORT_C TInt Count() const;
00091
00095                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00096
00104                 IMPORT_C void InternalizeL(RReadStream& aStream);
00105
00106         private:
00107                 void AddL(TInt aAttribute, const TDesC& aValue, TInt aErrorCode);
00108
00109                 RPointerArray <CStringAttribute> iAttributes;
00110                 };
00111         }
00112 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: supplier.h Source File

  • File List
  • File Members

supplier.h

Go to the documentation of this file.
00001 // supplier.h
00002 // Copyright (c) Symbian Software Ltd 2003 - 2004.  All rights reserved.
00003
00012 #ifndef __SUPPLIER_H__
00013 #define __SUPPLIER_H__
00014
00015 #include <e32base.h>
00016 #include <e32std.h>
00017 #include <caf/caftypes.h>
00018
00019 class RHTTPHeaders;
00020 class RStringPool;
00021
00022 namespace ContentAccess
00023         {
00024         class CImportFile;
00025         class CMetaDataArray;
00026         class CAgentResolver;
00027         class MFileHandleProvider;
00028
00029 #ifndef REMOVE_CAF1
00030         class CCafMimeHeader;
00031 #endif
00032
00051         class CSupplier : public CBase
00052                 {
00053         public:
00057                 IMPORT_C static CSupplier* NewL();
00058
00062                 IMPORT_C static CSupplier* NewLC();
00063
00065                 virtual ~CSupplier();
00066
00071                 IMPORT_C void SetOutputDirectoryL(const TDesC& aOutputDirectory);
00072
00082                 IMPORT_C TBool IsImportSupported(const TDesC8& aMimeType);
00083
00084
00095                 IMPORT_C void PrepareHTTPRequestHeaders(RStringPool& aStringPool, RHTTPHeaders& aRequestHeaders) const;
00096
00097
00110                 IMPORT_C CImportFile* ImportFileL(const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData, const TDesC& aSuggestedFileName);
00111
00127                 IMPORT_C CImportFile* ImportFileL(const TDesC8& aMimeType, const CMetaDataArray& aImportMetaData);
00128
00129 #ifndef REMOVE_CAF1
00130
00135                 IMPORT_C CImportFile* ImportFileL(CCafMimeHeader &aMimeHeader, const TDesC &aSuggestedFileName);
00136 #endif
00137
00138         private:
00139                 CSupplier();
00140                 void ConstructL();
00141
00142                 // Resolver used to figure out which CA agent is responsible for importing a particular file
00143                 CAgentResolver* iAgentResolver;
00144                 HBufC* iOutputDirectory;
00145                 };
00146         }
00147
00148 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: supplieroutputfile.h Source File

  • File List
  • File Members

supplieroutputfile.h

Go to the documentation of this file.
00001 // supplieroutputfile.h
00002 // Copyright (c) Symbian Software Ltd 2003 - 2004.  All rights reserved.
00003
00012 #ifndef __SUPPLIEROUTPUTFILE_H__
00013 #define __SUPPLIEROUTPUTFILE_H__
00014
00015 #include <e32base.h>
00016 #include <apmstd.h>
00017 #include <caf/caftypes.h>
00018
00019 class RReadStream;
00020 class RWriteStream;
00021
00022 namespace ContentAccess
00023         {
00024 #ifndef REMOVE_CAF1
00025         class CAttribute;
00026 #endif
00027
00040         class CSupplierOutputFile : public CBase
00041                 {
00042         public:
00043
00044                 #ifndef REMOVE_CAF1
00045
00056                 IMPORT_C static CSupplierOutputFile* NewL(const TDesC& aFileName, const TOutputType aOutputType);
00057                 #endif // REMOVE_CAF1
00058
00068                 IMPORT_C static CSupplierOutputFile* NewL(const TDesC& aFileName, const TOutputType aOutputType, const TDesC8& aMimeType);
00069
00070
00075                 IMPORT_C static CSupplierOutputFile* NewL(RReadStream& aStream);
00076
00077                 virtual ~CSupplierOutputFile();
00078
00083                 IMPORT_C TPtrC FileName() const;
00084
00091                 IMPORT_C TOutputType OutputType() const;
00092
00097                 IMPORT_C TPtrC8 MimeTypeL();
00098
00103                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00104
00105 #ifndef REMOVE_CAF1
00106
00110                 IMPORT_C CAttribute& AttributesL (TBool aPreloaded);
00111         private:
00112                 CAttribute *iAttr;
00113 #endif // REMOVE_CAF1
00114
00115         private:
00116                 CSupplierOutputFile();
00117                 void ConstructL(const TDesC& aFileName, const TDesC8& aMimeType, const TOutputType aOutputType);
00118
00119                 void InternalizeL(RReadStream& aStream);
00120
00121                 HBufC* iFileName;
00122                 TBuf8 <KMaxDataTypeLength> iMimeType;
00123                 TOutputType iOutputType;
00124                 };
00125         }
00126
00127 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: UI.dox File Reference

  • File List
  • File Members

UI.dox File Reference

Generated on Wed Feb 28 12:21:08 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: virtualpath.h Source File

  • File List
  • File Members

virtualpath.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2006. All rights reserved.
00002 // virtualpath.h
00003
00013 #ifndef __CAFVIRTUALPATH_H__
00014 #define __CAFVIRTUALPATH_H__
00015
00016 #include <e32base.h>
00017
00018 #include <caf/virtualpathptr.h>
00019
00020 class RReadStream;
00021 class RWriteStream;
00022
00023 namespace ContentAccess
00024         {
00025         class TVirtualPathPtr;
00026
00063         class CVirtualPath : public CBase
00064                 {
00065         public:
00070                 IMPORT_C static CVirtualPath* NewL(const TVirtualPathPtr& aPtr);
00071
00083                 IMPORT_C static CVirtualPath* NewL(const TDesC& aCombinedUriUniqueId);
00084
00090                 IMPORT_C static CVirtualPath* NewL(const TDesC& aURI, const TDesC& aUniqueId);
00091
00095                 IMPORT_C static CVirtualPath* NewL(RReadStream& aStream);
00096
00097
00098                 virtual ~CVirtualPath();
00099
00103                 IMPORT_C const TDesC& URI() const;
00104
00109                 IMPORT_C const TDesC& UniqueId() const;
00110
00114                 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
00115
00120                 IMPORT_C const TDesC& GetCombinedUriUniqueId();
00121
00125                 inline operator const TVirtualPathPtr& () const;
00126
00127         private:
00128                 CVirtualPath(const TVirtualPathPtr& aPtr);
00129
00132                 void ConstructL();
00133
00135                 void CreateCombinedUriUniqueIdL(const TDesC& aUri, const TDesC& aUniqueId);
00136
00137                 void InternalizeL(RReadStream& aStream);
00138
00139         private:
00140
00141                 HBufC* iURI;
00142                 HBufC* iUniqueId;
00143                 HBufC* iCombinedUriUniqueId;
00144                 TPtrC iCombinedUriUniqueIdPtr;
00145                 TVirtualPathPtr iVirtualPathPtr;
00146                 };
00147
00148
00149         // Cast operator for treating a CVirtualPath as a TVirtualPathPtr
00150         inline CVirtualPath::operator const TVirtualPathPtr& () const
00151                         {
00152                         return iVirtualPathPtr;
00153                         }
00154         }
00155
00156 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO


Content Access Framework: virtualpathptr.h Source File

  • File List
  • File Members

virtualpathptr.h

Go to the documentation of this file.
00001 // Copyright Symbian Software Ltd 2003-2006. All rights reserved.
00002 // virtualpathptr.h
00003
00012 #ifndef __CAFVIRTUALPATHPTR_H__
00013 #define __CAFVIRTUALPATHPTR_H__
00014
00015 #include <e32base.h>
00016
00017 namespace ContentAccess
00018         {
00019         class CVirtualPath;
00020
00025         _LIT(KCafVirtualPathSeparator, "|");
00026
00066         class TVirtualPathPtr
00067                 {
00068         public:
00073                 IMPORT_C TVirtualPathPtr(const TDesC& aUri, const TDesC& aUniqueId);
00074
00083                 IMPORT_C TVirtualPathPtr(const TDesC& aCombinedUriUniqueId);
00084
00086                 IMPORT_C TVirtualPathPtr(const TVirtualPathPtr& aPtr);
00087
00091                 IMPORT_C const TDesC& URI() const;
00092
00097                 IMPORT_C const TDesC& UniqueId() const;
00098
00100                 IMPORT_C TVirtualPathPtr& operator = (const TVirtualPathPtr& aVirtualPath);
00101
00107                 IMPORT_C TVirtualPathPtr& operator = (const TDesC& aCombinedUriUniqueId);
00108
00109
00110         private:
00111                 // The Set() function is only used by CVirtualPath
00112                 friend class CVirtualPath;
00113
00115                 void Set(const TDesC& aUri, const TDesC& aUniqueId);
00116
00117         private:
00118                 TPtrC iUri;
00119                 TPtrC iUniqueId;
00120                 };
00121         }
00122
00123 #endif
Generated on Wed Feb 28 12:21:04 2007 for Content Access Framework by doxygen 1.4.6-NO