sl@0: // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __FILE_ACCESS_H__ sl@0: #define __FILE_ACCESS_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: // Abstract class providing generic file access sl@0: class MGenericFile sl@0: { sl@0: public: sl@0: virtual ~MGenericFile(); sl@0: sl@0: virtual TInt Seek(TSeek aSeekMode, TInt aPosition)=0; sl@0: virtual TInt Read(TDes8& aDes,TInt aLength)=0; sl@0: virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus)=0; sl@0: sl@0: virtual TInt Write(const TDesC8& aDes,TInt aLength)=0; sl@0: virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)=0; sl@0: sl@0: virtual TInt Size(TInt& aSize)=0; sl@0: virtual TInt SetSize(TInt aSize)=0; sl@0: sl@0: virtual TInt EvaluateIntent(const ContentAccess::TIntent aIntent) const = 0; sl@0: virtual TInt ExecuteIntent(const ContentAccess::TIntent aIntent) = 0; sl@0: virtual TBool IsProtected()const = 0; sl@0: sl@0: // legacy file support - better to use Data() sl@0: virtual RFile& FileL()=0; sl@0: sl@0: virtual TInt SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue) = 0; sl@0: sl@0: virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus) = 0; sl@0: // access to CData sl@0: virtual TInt Data(ContentAccess::CData*& aData) = 0; sl@0: sl@0: }; sl@0: sl@0: // Provide RFile based file access - only now used for recording sl@0: class CF32File : public CBase, public MGenericFile sl@0: { sl@0: public: sl@0: static CF32File* NewL(RFs& aSession, TDesC& aPath, TUint aMode); sl@0: static CF32File* NewL(RFile& aFile); sl@0: void ConstructL(RFile& aFile); sl@0: void ConstructL(RFs& aSession, TDesC& aPath, TUint aMode); sl@0: sl@0: virtual ~CF32File(); sl@0: sl@0: // from MGenericFile sl@0: virtual TInt Seek(TSeek aSeekMode, TInt aPosition); sl@0: virtual TInt Read(TDes8& aDes,TInt aLength); sl@0: virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus); sl@0: virtual TInt Write(const TDesC8& aDes,TInt aLength); sl@0: virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus); sl@0: virtual TInt Size(TInt& aSize); sl@0: virtual TInt SetSize(TInt aSize); sl@0: virtual TInt EvaluateIntent(const ContentAccess::TIntent aIntent) const; sl@0: virtual TInt ExecuteIntent(const ContentAccess::TIntent aIntent); sl@0: virtual TBool IsProtected() const; sl@0: virtual RFile& FileL(); sl@0: sl@0: virtual TInt SetAgentProperty(ContentAccess::TAgentProperty, TInt aValue); sl@0: sl@0: virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus); sl@0: virtual TInt Data(ContentAccess::CData*& aData); sl@0: private: sl@0: CF32File(); sl@0: sl@0: private: sl@0: RFs* iSession; // not owned sl@0: HBufC* iFilePath; sl@0: RFile iFile; sl@0: sl@0: TBool iFileHandle; sl@0: TInt iFileSize; sl@0: }; sl@0: sl@0: // Provides content access framework based file access sl@0: class CContentFile : public CBase, public MGenericFile sl@0: { sl@0: public: sl@0: static CContentFile* NewL(RFs& aSession, const TDesC& aPath, const TDesC& aUniqueId, TUint aMode, TBool aEnableUI); sl@0: void ConstructL(RFs& aSession, const TDesC& aPath, const TDesC& aUniqueId, TUint aMode, TBool aEnableUI); sl@0: sl@0: static CContentFile* NewL(RFile& aFile, const TDesC& aUniqueId, TBool aEnableUI); sl@0: void ConstructL(RFile& aFile, const TDesC& aUniqueId, TBool aEnableUI); sl@0: sl@0: virtual ~CContentFile(); sl@0: sl@0: // from MGenericFile sl@0: virtual TInt Seek(TSeek aSeekMode, TInt aPosition); sl@0: virtual TInt Read(TDes8& aDes,TInt aLength); sl@0: virtual void Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus); sl@0: virtual TInt Write(const TDesC8& aDes,TInt aLength); sl@0: virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus); sl@0: virtual TInt Size(TInt& aSize); sl@0: virtual TInt SetSize(TInt aSize); sl@0: virtual TInt EvaluateIntent(const ContentAccess::TIntent aIntent) const; sl@0: virtual TInt ExecuteIntent(const ContentAccess::TIntent aIntent); sl@0: virtual TBool IsProtected() const; sl@0: virtual RFile& FileL(); sl@0: sl@0: virtual TInt SetAgentProperty(ContentAccess::TAgentProperty, TInt aValue); sl@0: virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus); sl@0: virtual TInt Data(ContentAccess::CData*& aData); sl@0: sl@0: sl@0: private: sl@0: CContentFile(); sl@0: sl@0: sl@0: private: sl@0: RFs* iSession; // not owned sl@0: HBufC* iFilePath; sl@0: ContentAccess::CData* iData; sl@0: sl@0: RFile iLegacyFile; sl@0: RFile64 iFile64; //For defect EASA-84ZC6J sl@0: TBool iLegacyFileOpen; sl@0: }; sl@0: sl@0: sl@0: inline CF32File::CF32File() sl@0: { sl@0: } sl@0: sl@0: inline CContentFile::CContentFile() sl@0: { sl@0: } sl@0: sl@0: inline MGenericFile::~MGenericFile() sl@0: { sl@0: } sl@0: sl@0: #endif //__FILE_ACCESS_H__