Update contrib.
1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __FILE_ACCESS_H__
17 #define __FILE_ACCESS_H__
19 #include <caf/content.h>
21 #include <mmf/common/mmcaf.h>
23 // Abstract class providing generic file access
27 virtual ~MGenericFile();
29 virtual TInt Seek(TSeek aSeekMode, TInt aPosition)=0;
30 virtual TInt Read(TDes8& aDes,TInt aLength)=0;
31 virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus)=0;
33 virtual TInt Write(const TDesC8& aDes,TInt aLength)=0;
34 virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)=0;
36 virtual TInt Size(TInt& aSize)=0;
37 virtual TInt SetSize(TInt aSize)=0;
39 virtual TInt EvaluateIntent(const ContentAccess::TIntent aIntent) const = 0;
40 virtual TInt ExecuteIntent(const ContentAccess::TIntent aIntent) = 0;
41 virtual TBool IsProtected()const = 0;
43 // legacy file support - better to use Data()
44 virtual RFile& FileL()=0;
46 virtual TInt SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue) = 0;
48 virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus) = 0;
50 virtual TInt Data(ContentAccess::CData*& aData) = 0;
54 // Provide RFile based file access - only now used for recording
55 class CF32File : public CBase, public MGenericFile
58 static CF32File* NewL(RFs& aSession, TDesC& aPath, TUint aMode);
59 static CF32File* NewL(RFile& aFile);
60 void ConstructL(RFile& aFile);
61 void ConstructL(RFs& aSession, TDesC& aPath, TUint aMode);
66 virtual TInt Seek(TSeek aSeekMode, TInt aPosition);
67 virtual TInt Read(TDes8& aDes,TInt aLength);
68 virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
69 virtual TInt Write(const TDesC8& aDes,TInt aLength);
70 virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus);
71 virtual TInt Size(TInt& aSize);
72 virtual TInt SetSize(TInt aSize);
73 virtual TInt EvaluateIntent(const ContentAccess::TIntent aIntent) const;
74 virtual TInt ExecuteIntent(const ContentAccess::TIntent aIntent);
75 virtual TBool IsProtected() const;
76 virtual RFile& FileL();
78 virtual TInt SetAgentProperty(ContentAccess::TAgentProperty, TInt aValue);
80 virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
81 virtual TInt Data(ContentAccess::CData*& aData);
86 RFs* iSession; // not owned
94 // Provides content access framework based file access
95 class CContentFile : public CBase, public MGenericFile
98 static CContentFile* NewL(RFs& aSession, const TDesC& aPath, const TDesC& aUniqueId, TUint aMode, TBool aEnableUI);
99 void ConstructL(RFs& aSession, const TDesC& aPath, const TDesC& aUniqueId, TUint aMode, TBool aEnableUI);
101 static CContentFile* NewL(RFile& aFile, const TDesC& aUniqueId, TBool aEnableUI);
102 void ConstructL(RFile& aFile, const TDesC& aUniqueId, TBool aEnableUI);
104 virtual ~CContentFile();
107 virtual TInt Seek(TSeek aSeekMode, TInt aPosition);
108 virtual TInt Read(TDes8& aDes,TInt aLength);
109 virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
110 virtual TInt Write(const TDesC8& aDes,TInt aLength);
111 virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus);
112 virtual TInt Size(TInt& aSize);
113 virtual TInt SetSize(TInt aSize);
114 virtual TInt EvaluateIntent(const ContentAccess::TIntent aIntent) const;
115 virtual TInt ExecuteIntent(const ContentAccess::TIntent aIntent);
116 virtual TBool IsProtected() const;
117 virtual RFile& FileL();
119 virtual TInt SetAgentProperty(ContentAccess::TAgentProperty, TInt aValue);
120 virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
121 virtual TInt Data(ContentAccess::CData*& aData);
129 RFs* iSession; // not owned
131 ContentAccess::CData* iData;
134 RFile64 iFile64; //For defect EASA-84ZC6J
135 TBool iLegacyFileOpen;
139 inline CF32File::CF32File()
143 inline CContentFile::CContentFile()
147 inline MGenericFile::~MGenericFile()
151 #endif //__FILE_ACCESS_H__