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