os/mm/mmlibs/mmfw/src/Plugin/StdSourceAndSink/FileAccess.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #ifndef __FILE_ACCESS_H__
    17 #define __FILE_ACCESS_H__
    18 
    19 #include <caf/content.h>
    20 #include <caf/data.h>
    21 #include <mmf/common/mmcaf.h>
    22 
    23 // Abstract class providing generic file access
    24 class MGenericFile
    25 	{
    26 public:
    27 	virtual ~MGenericFile();
    28 
    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;
    32 
    33 	virtual TInt Write(const TDesC8& aDes,TInt aLength)=0;
    34 	virtual void Write(const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)=0;
    35 
    36 	virtual TInt Size(TInt& aSize)=0;
    37 	virtual TInt SetSize(TInt aSize)=0;
    38 
    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;
    42 
    43 	// legacy file support - better to use Data()
    44 	virtual RFile& FileL()=0;
    45 
    46 	virtual TInt SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue) = 0;
    47 
    48 	virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus) = 0;
    49 	// access to CData
    50     virtual TInt Data(ContentAccess::CData*& aData) = 0;
    51 
    52 	};
    53 
    54 // Provide RFile based file access - only now used for recording
    55 class CF32File : public CBase, public MGenericFile
    56 	{
    57 public:
    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);
    62 
    63 	virtual ~CF32File();
    64 
    65 	// from MGenericFile
    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();
    77 
    78 	virtual TInt SetAgentProperty(ContentAccess::TAgentProperty, TInt aValue);
    79 	
    80 	virtual TInt Read(TInt aPosition, TDes8& aDes, TInt aLength, TRequestStatus& aStatus);
    81 	virtual TInt Data(ContentAccess::CData*& aData);
    82 private:
    83 	CF32File();
    84 
    85 private:
    86 	RFs* iSession;	// not owned
    87 	HBufC* iFilePath;
    88 	RFile iFile;
    89 	
    90 	TBool iFileHandle;
    91 	TInt iFileSize;
    92 	};
    93 
    94 // Provides content access framework based file access
    95 class CContentFile : public CBase, public MGenericFile
    96 	{
    97 public:
    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);
   100 
   101 	static CContentFile* NewL(RFile& aFile, const TDesC& aUniqueId, TBool aEnableUI);
   102 	void ConstructL(RFile& aFile, const TDesC& aUniqueId, TBool aEnableUI);
   103 
   104 	virtual ~CContentFile();
   105 
   106 	// from MGenericFile
   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();
   118 	
   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);
   122 
   123 
   124 private:
   125 	CContentFile();
   126 
   127 
   128 private:
   129 	RFs* iSession; // not owned
   130 	HBufC* iFilePath;
   131 	ContentAccess::CData* iData;
   132 
   133 	RFile   iLegacyFile;
   134 	RFile64 iFile64; //For defect EASA-84ZC6J 
   135 	TBool   iLegacyFileOpen;
   136 	};
   137 
   138 
   139 inline CF32File::CF32File() 
   140 	{
   141 	}
   142 
   143 inline CContentFile::CContentFile() 
   144 	{
   145 	}
   146 
   147 inline MGenericFile::~MGenericFile()
   148 	{
   149 	}
   150 
   151 #endif //__FILE_ACCESS_H__