kerneltest/f32test/fsstress/t_remfsy.h
changeset 0 a41df078684a
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     1 // Copyright (c) 1997-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 the License "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 // f32test\fsstress\t_remfsy.h
       
    15 // 
       
    16 //
       
    17 
       
    18 #include <e32twin.h>
       
    19 #if !defined(__T_REMFSY_H__)
       
    20 #define __T_REMFSY_H__
       
    21 #if defined(_UNICODE)
       
    22 #define _WTEXT(c) L ## c
       
    23 #define _STRC LPCWSTR
       
    24 #define _STR LPWSTR
       
    25 #else
       
    26 #define _WTEXT(c) c
       
    27 #define _STRC LPCSTR
       
    28 #define _STR LPSTR
       
    29 #endif
       
    30 
       
    31 #include <f32fsys.h>
       
    32 #include <f32file.h>
       
    33 #include <e32test.h>
       
    34 #include <e32hal.h>
       
    35 #include <e32math.h>
       
    36 #if defined (__DEBUG__)|| defined(_DEBUG_RELEASE)
       
    37 #include <f32dbg.h>
       
    38 #endif
       
    39 
       
    40 
       
    41 //
       
    42 // Common constants used by both EFSRV and the filesystems
       
    43 //
       
    44 
       
    45 const TUint KEntryAttIllegal=(KEntryAttVolume|KEntryAttDir);
       
    46 const TUint KEntryAttModified=0x20000000;
       
    47 const TUint KEntryAttMustBeFile=0x80000000;
       
    48 const TInt KCurrentPosition=KMinTInt;
       
    49 
       
    50 
       
    51 GLDEF_D const TInt KMaxParses=7;
       
    52 GLDEF_D const TInt KHeapSize=0x2000;
       
    53 GLREF_C void TurnAllocFailureOff();
       
    54 GLREF_C void TurnAllocFailureOn();
       
    55 GLREF_C void ReportCheckDiskFailure(TInt aRet);
       
    56 GLREF_D RTest test;
       
    57 GLREF_D TFileName gSessionPath;
       
    58 GLREF_D TInt gAllocFailOff;
       
    59 GLREF_D TInt gAllocFailOn;
       
    60 
       
    61 #if defined(_DEBUG)
       
    62 #define SetAllocFailure(a) SetAllocFailure(a)
       
    63 #else
       
    64 #define SetAllocFailure(a) IsRomAddress(NULL)
       
    65 #define KAllocFailureOn 0
       
    66 #define KAllocFailureOff 0
       
    67 #endif
       
    68 
       
    69 
       
    70 enum TPanic
       
    71 	{
       
    72 	EFileTimeToSystemTime,
       
    73 	EFileClose,
       
    74 	EFileCloseSetAttributes,
       
    75 	EDirClose,
       
    76 	EMapCouldNotConnect
       
    77 	};
       
    78 
       
    79 
       
    80 class CSessionFs;
       
    81 
       
    82 class CRemoteMountCB : public CMountCB
       
    83 	{
       
    84 public:
       
    85 	CRemoteMountCB();
       
    86 	~CRemoteMountCB();
       
    87 	void MountL(TBool aForceMount);
       
    88 	TInt ReMount();
       
    89 	void Dismounted();
       
    90 	void VolumeL(TVolumeInfo& aVolume) const;
       
    91 	void SetVolumeL(TDes& aName);
       
    92 	void MkDirL(const TDesC& aName);
       
    93 	void RmDirL(const TDesC& aName);
       
    94 	void DeleteL(const TDesC& aName);
       
    95 	void RenameL(const TDesC& anOldName,const TDesC& anNewName);
       
    96 	void ReplaceL(const TDesC& anOldName,const TDesC& anNewName);
       
    97 	void EntryL(const TDesC& aName,TEntry& anEntry) const;
       
    98 	void SetEntryL(const TDesC& aName,const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
       
    99 	void FileOpenL(const TDesC& aName,TUint aMode,TFileOpen anOpen,CFileCB* aFile);
       
   100 	void DirOpenL(const TDesC& aName,CDirCB* aDir);
       
   101 	void RawReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt anOffset,const RMessagePtr2& aMessage) const;
       
   102 	void RawWriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt anOffset,const RMessagePtr2& aMessage);
       
   103 	void ReadUidL(const TDesC& aName,TEntry& anEntry) const;
       
   104 	void GetShortNameL(const TDesC& aLongName,TDes& aShortName);
       
   105 	void GetLongNameL(const TDesC& aShortName,TDes& aLongName);
       
   106 	void IsFileInRom(const TDesC& aFileName,TUint8*& aFileStart);
       
   107 	void ReadSectionL(const TDesC& aName,TInt aPos,TAny* aTrg,TInt aLength,const RMessagePtr2& aMessage);
       
   108 private:
       
   109 	TBool IsRomDrive() const;
       
   110 	};
       
   111 
       
   112 
       
   113 class RConsole;
       
   114 class CRemoteFileCB : public CFileCB
       
   115 	{
       
   116 public:
       
   117 	CRemoteFileCB();
       
   118 	~CRemoteFileCB();
       
   119 	void RenameL(const TDesC& aNewName);
       
   120 	void ReadL(TInt aPos,TInt& aLength,const TAny* aDes,const RMessagePtr2& aMessage);
       
   121 	void WriteL(TInt aPos,TInt& aLength,const TAny* aDes,const RMessagePtr2& aMessage);
       
   122 	TInt Address(TInt& aPos) const;
       
   123 	void SetSizeL(TInt aSize);
       
   124 	void SetEntryL(const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
       
   125 	void FlushDataL();
       
   126 	void FlushAllL();
       
   127 //	inline void SetHandle(HANDLE aHandle) {iWinHandle=aHandle;}
       
   128 	void CheckPos(TInt aPos);
       
   129 private:
       
   130 	TBool IsRomDrive() const;
       
   131 private:
       
   132 	TInt iCurrentPos;
       
   133 	TUint8* iFilePtr;
       
   134 	RConsole iConsole;
       
   135 //	HANDLE iWinHandle;
       
   136 	};
       
   137 
       
   138 class CRemoteDirCB : public CDirCB
       
   139 	{
       
   140 public:
       
   141 	CRemoteDirCB(/*CSessionFs* aSession*/);
       
   142 	~CRemoteDirCB();
       
   143 	void ReadL(TEntry& anEntry);
       
   144 //	inline void SetHandle(HANDLE aHandle) {iWinHandle=aHandle;}
       
   145 	inline void SetFullName(const TDesC& aName) {iFullName.Set(aName,NULL,NULL);}
       
   146 private:
       
   147 	TBool MatchUid();
       
   148 public:
       
   149 	TEntry iEntry;
       
   150 private:
       
   151 //	HANDLE iWinHandle;
       
   152 	TParse iFullName;
       
   153 	};
       
   154 
       
   155 class CRemoteFormatCB : public CFormatCB
       
   156 	{
       
   157 public:
       
   158 	CRemoteFormatCB(/*CSessionFs* aSession*/);
       
   159 	~CRemoteFormatCB();
       
   160 public:
       
   161 	virtual void DoFormatStepL();
       
   162 	};
       
   163 
       
   164 class CRemote : public CFileSystem
       
   165 	{
       
   166 public:
       
   167 	CRemote();
       
   168 	TInt Install();
       
   169 	TInt DefaultPath(TDes& aPath) const;
       
   170 	void DriveInfo(TDriveInfo& anInfo,TInt aDriveNumber) const;
       
   171 private:
       
   172 	CMountCB* NewMountL() const;	//	These were not previously implemented
       
   173 	CFileCB* NewFileL() const;		//	They are essential for a CRemote
       
   174 	CDirCB* NewDirL() const;		//	object to be instantiated because they are
       
   175 	CFormatCB* NewFormatL() const;	//	pure virtual in CFileSystem
       
   176 public:
       
   177 	static CFileSystem* NewL();
       
   178 	};
       
   179 
       
   180 struct SParse
       
   181 	{
       
   182 	const TText* src;
       
   183 	const TText* rel;
       
   184 	const TText* def;
       
   185 	const TText* fullName;
       
   186 	const TText* drive;
       
   187 	const TText* path;
       
   188 	const TText* name;
       
   189 	const TText* ext;
       
   190 	};
       
   191 
       
   192 struct SParseServer
       
   193 	{
       
   194 	const TText* src;
       
   195 	const TText* rel;
       
   196 	const TText* fullName;
       
   197 	const TText* drive;
       
   198 	const TText* path;
       
   199 	const TText* name;
       
   200 	const TText* ext;
       
   201 	};
       
   202 
       
   203 
       
   204 class TMultipleSessionTest
       
   205 	{
       
   206 public:
       
   207 	TMultipleSessionTest() {};
       
   208 	TMultipleSessionTest(RFs& aFs):	iFs(aFs){};	
       
   209 	void Initialise(RFs& aFs);
       
   210 	void RunTests(RTest& aTest);
       
   211 	void testDriveList(RTest& aTest);
       
   212 	void testDriveInfo(RTest& aTest);
       
   213 	void testVolumeInfo(RTest& aTest);
       
   214 	void testPath(RTest& aTest);
       
   215 	void testInitialisation(RTest& aTest);
       
   216 	void testSubst(RTest& aTest);
       
   217 	void CopyFileToTestDirectory(RTest& aTest);
       
   218 	void MakeAndDeleteFiles(RTest& aTest);
       
   219 	void FillUpDisk(RTest& aTest);
       
   220 	void testSetVolume(RTest& aTest);
       
   221 //	void testPowerDown(RTest& aTest);
       
   222 //	void testMediaChange(RTest& aTest);
       
   223 	void DeleteTestDirectory(RTest& aTest);
       
   224 	TInt CurrentDrive(RTest& aTest);
       
   225 	void SetSessionPath(TInt aDrive);
       
   226 private:
       
   227 	RFs iFs;
       
   228 	TBuf<30> iSessionPath;
       
   229 	};
       
   230 
       
   231 
       
   232 //
       
   233 // WINS - dependent functions
       
   234 //
       
   235 
       
   236 GLREF_D const TFileName ZPath;
       
   237 
       
   238 GLREF_C TBool GetEnvValue(TInt aDrive,TDes& aDes);
       
   239 GLREF_C TBool MapDrive(TDes& aFileName,TInt aDrive);
       
   240 GLREF_C TBool MapDriveInfo(TDriveInfo& anInfo,TInt aDrive);
       
   241 GLREF_C TBool MapDriveAttributes(TUint& aDriveAtt,TInt aDrive);
       
   242 GLREF_C void CheckAppendL(TDes& aFileName,const TDesC& aName);
       
   243 #endif
       
   244 
       
   245