--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/f32test/concur/cfafsdly.h Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,160 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "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:
+// Contains all of the delay filesystem classes.
+//
+
+//! @file f32test\concur\cfafsdly.h
+
+#ifndef __CFAFSDLY_H__
+#define __CFAFSDLY_H__
+
+#include <f32file.h>
+#include "common.h"
+#include <f32fsys.h>
+#include <f32ver.h>
+#include <f32dbg.h>
+#include <e32svr.h>
+
+const TInt KMaxFiles = 10; ///< Maximum number of files in the filesystem
+const TInt KMaxFileLen = 8192; ///< Maximum length of an individual file
+
+class TTestFile
+/// Describe a file, including the data.
+ {
+public:
+ TTestFile();
+ void Entry(TEntry& aEntry) const;
+public:
+ TFileName iName; ///< name of the file.
+ TUint8 iData[KMaxFileLen]; ///< data in the file (fixed maximum length).
+ TInt iSize; ///< current size of the file (length of data).
+ TTime iTime; ///< timestamp of last modification.
+ };
+
+class TTestDir
+/// Holds the directory for the filesystem (there is only one!), including all
+/// of the files with their data. Only practical for a simple test system.
+ {
+public:
+ TTestDir();
+ TTestFile* Create(const TDesC& aName);
+ TTestFile* Find(const TDesC& aName);
+ const TTestFile* Find(const TDesC& aName) const;
+ void Delete(const TDesC& aName);
+ TTestFile* Entry(TInt aIndex);
+private:
+ TTestFile iFile[KMaxFiles]; ///< All of the file data.
+ };
+
+class CTestMountCB : public CMountCB
+/// Data and functions associated with a mounted filesystem. It is allocated
+/// by the file server when the filesystem is mounted and destroyed when it is
+/// unmounted (hence losing all of the data in files in this case).
+ {
+public:
+ CTestMountCB();
+ ~CTestMountCB();
+ void MountL(TBool aForceMount);
+ TInt ReMount();
+ void Dismounted();
+ void VolumeL(TVolumeInfo& aVolume) const;
+ void SetVolumeL(TDes& aName);
+ void MkDirL(const TDesC& aName);
+ void RmDirL(const TDesC& aName);
+ void DeleteL(const TDesC& aName);
+ void RenameL(const TDesC& anOldName,const TDesC& anNewName);
+ void ReplaceL(const TDesC& anOldName,const TDesC& anNewName);
+ void EntryL(const TDesC& aName,TEntry& anEntry) const;
+ void SetEntryL(const TDesC& aName,const TTime& aTime,TUint aSetAttMask,TUint learAttMask);
+ void FileOpenL(const TDesC& aName,TUint aMode,TFileOpen anOpen,CFileCB* aFile);
+ void DirOpenL(const TDesC& aName,CDirCB* aDir);
+ void RawReadL(TInt64 aPos,TInt aLength,const TAny* aDes,TInt anOffset,const RMessagePtr2& aMessage) const;
+ void RawWriteL(TInt64 aPos,TInt aLength,const TAny* aDes,TInt anOffset,const RMessagePtr2& aMessage);
+ void ReadUidL(const TDesC& aName,TEntry& anEntry) const;
+ void GetShortNameL(const TDesC& aLongName,TDes& aShortName);
+ void GetLongNameL(const TDesC& aShortName,TDes& aLongName);
+ void IsFileInRom(const TDesC& aFileName,TUint8*& aFileStart);
+ void ReadSectionL(const TDesC& aName,TInt aPos,TAny* aTrg,TInt aLength,const RMessagePtr2& aMessage);
+private:
+ TTestDir iDir; ///< The directory information, including all files and their data.
+ };
+
+
+
+class CTestFileCB : public CFileCB
+/// Data about a specific open file.
+ {
+public:
+ CTestFileCB();
+ ~CTestFileCB();
+ void RenameL(const TDesC& aNewName);
+ void ReadL(TInt aPos,TInt& aLength,const TAny* aDes,const RMessagePtr2& aMessage);
+ void WriteL(TInt aPos,TInt& aLength,const TAny* aDes,const RMessagePtr2& aMessage);
+ TInt Address(TInt& aPos) const;
+ void SetSizeL(TInt aSize);
+ void SetEntryL(const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
+ void FlushDataL();
+ void FlushAllL();
+ void CheckPos(TInt aPos);
+
+public:
+ TUint8 iPadding[128]; // in case we're passed a CFATFileCB
+ TTestFile* iFile; ///< Points to the file structure of the open file.
+ TUint8* iData; ///< Points to the data area of the file.
+ };
+
+class CTestDirCB : public CDirCB
+/// Data for accessing a directory for search etc.
+ {
+public:
+ CTestDirCB();
+ ~CTestDirCB();
+ void ReadL(TEntry& anEntry);
+
+public:
+ TFileName iName; ///< Name of the current file.
+ TTestDir* iDir; ///< Pointer to the directory data.
+ TInt iIndex; ///< Current position in the directory.
+ };
+
+class CTestFormatCB : public CFormatCB
+/// Functions for formatting the filesystem. Not used.
+ {
+public:
+ CTestFormatCB();
+ ~CTestFormatCB();
+ void DoFormatStepL();
+ };
+
+class CTestFileSystem : public CFileSystem
+/// Describes the filesysem, and creates a new one when it is mounted.
+ {
+public:
+ CTestFileSystem();
+ ~CTestFileSystem();
+ TInt Install();
+ TInt DefaultPath(TDes& aPath) const;
+ void DriveInfo(TDriveInfo& anInfo, TInt aDriveNumber) const;
+ TBusLocalDrive& DriveNumberToLocalDrive(TInt aDriveNumber);
+ TInt GetInterface(TInt aInterfaceId, TAny*& aInterface,TAny* aInput);
+private:
+ CMountCB* NewMountL() const;
+ CFileCB* NewFileL() const;
+ CDirCB* NewDirL() const;
+ CFormatCB* NewFormatL() const;
+public:
+ static CFileSystem* NewL();
+ };
+
+#endif