90 |
90 |
91 public: |
91 public: |
92 |
92 |
93 //-- public interface to the local drive. Provides media driver's error handling (critical and non-critical user notifiers) |
93 //-- public interface to the local drive. Provides media driver's error handling (critical and non-critical user notifiers) |
94 //-- and thread-safety if required. |
94 //-- and thread-safety if required. |
95 TInt ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const; |
95 TInt ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const; |
96 TInt ReadNonCritical(TInt64 aPos,TInt aLength,TDes8& aTrg) const; |
96 TInt ReadNonCritical(TInt64 aPos,TInt aLength,TDes8& aTrg) const; |
97 TInt ReadCritical(TInt64 aPos,TInt aLength,TDes8& aTrg) const; |
97 TInt ReadCritical(TInt64 aPos,TInt aLength,TDes8& aTrg) const; |
98 |
98 |
99 TInt WriteCritical(TInt64 aPos,const TDesC8& aSrc); |
99 TInt WriteCritical(TInt64 aPos,const TDesC8& aSrc); |
100 TInt WriteNonCritical(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag); |
100 TInt WriteNonCritical(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset); |
101 |
101 |
102 TInt GetLastErrorInfo(TDes8& aErrorInfo) const; |
102 TInt GetLastErrorInfo(TDes8& aErrorInfo) const; |
103 |
103 |
104 //-- lock the mutex guarding CProxyDrive interface in order to be sure that no other thread can access it. |
104 //-- lock the mutex guarding CProxyDrive interface in order to be sure that no other thread can access it. |
105 //-- The thread that calls this method may be suspended until another signals the mutex, i.e. leaves the critical section. |
105 //-- The thread that calls this method may be suspended until another signals the mutex, i.e. leaves the critical section. |
146 |
146 |
147 inline void EnterCriticalSection() const {iLock.Wait();} |
147 inline void EnterCriticalSection() const {iLock.Wait();} |
148 inline void LeaveCriticalSection() const {iLock.Signal();} |
148 inline void LeaveCriticalSection() const {iLock.Signal();} |
149 |
149 |
150 //-- methods' wrappers that are used by TDriveInterface |
150 //-- methods' wrappers that are used by TDriveInterface |
151 TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const; |
151 TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const; |
152 TInt Read(TInt64 aPos,TInt aLength,TDes8& aTrg) const; |
152 TInt Read(TInt64 aPos,TInt aLength,TDes8& aTrg) const; |
153 TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag); |
153 TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset); |
154 TInt Write(TInt64 aPos, const TDesC8& aSrc); |
154 TInt Write(TInt64 aPos, const TDesC8& aSrc); |
155 TInt GetLastErrorInfo(TDes8& aErrorInfo) const; |
155 TInt GetLastErrorInfo(TDes8& aErrorInfo) const; |
156 TInt Caps(TDes8& anInfo) const; |
156 TInt Caps(TDes8& anInfo) const; |
157 |
157 |
158 private: |
158 private: |
190 |
190 |
191 //----------------------------------------------------------------- |
191 //----------------------------------------------------------------- |
192 //-- pure virtual interface |
192 //-- pure virtual interface |
193 virtual TUint32 ReadL(TUint32 aFatIndex) const = 0; |
193 virtual TUint32 ReadL(TUint32 aFatIndex) const = 0; |
194 virtual void WriteL(TUint32 aFatIndex, TUint32 aValue) = 0; |
194 virtual void WriteL(TUint32 aFatIndex, TUint32 aValue) = 0; |
195 virtual TInt64 DataPositionInBytesL(TUint32 aCluster) const = 0; |
195 virtual TInt64 DataPositionInBytes(TUint32 aCluster) const = 0; |
196 virtual void MountL(const TMountParams& aMountParam) = 0; |
196 virtual void MountL(const TMountParams& aMountParam) = 0; |
197 //----------------------------------------------------------------- |
197 //----------------------------------------------------------------- |
198 //-- just virtual interface |
198 //-- just virtual interface |
199 |
199 |
200 virtual void Dismount(TBool /*aDiscardDirtyData*/) {} |
200 virtual void Dismount(TBool /*aDiscardDirtyData*/) {} |
334 @param aLength Length in bytes of read |
334 @param aLength Length in bytes of read |
335 @param aTrg Pointer to the data descriptor, i.e. (const TAny*)(&TDes8) |
335 @param aTrg Pointer to the data descriptor, i.e. (const TAny*)(&TDes8) |
336 @param aMessage Refrence to server message from request |
336 @param aMessage Refrence to server message from request |
337 @param anOffset Offset into read data to write |
337 @param anOffset Offset into read data to write |
338 */ |
338 */ |
339 virtual void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const = 0; |
339 virtual void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const = 0; |
340 |
340 |
341 /** |
341 /** |
342 Disk write function |
342 Disk write function |
343 |
343 |
344 @param aPos Media position in bytes |
344 @param aPos Media position in bytes |
345 @param aLength Length in bytes of write |
345 @param aLength Length in bytes of write |
346 @param aTrg Pointer to the data descriptor, i.e. (const TAny*)(&TDes8) |
346 @param aTrg Pointer to the data descriptor, i.e. (const TAny*)(&TDes8) |
347 @param aMessage Refrence to server message from request, contains data |
347 @param aMessage Refrence to server message from request, contains data |
348 @param anOffset Offset into write data to use in write |
348 @param anOffset Offset into write data to use in write |
349 */ |
349 */ |
350 virtual void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) = 0; |
350 virtual void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset) = 0; |
351 |
351 |
352 |
352 |
353 virtual inline MWTCacheInterface* DirCacheInterface(); |
353 virtual inline MWTCacheInterface* DirCacheInterface(); |
354 |
354 |
355 |
355 |
568 void WriteDirEntryL(const TEntryPos& aPos,const TFatDirEntry& aDirEntry); |
568 void WriteDirEntryL(const TEntryPos& aPos,const TFatDirEntry& aDirEntry); |
569 |
569 |
570 void DirReadL(const TEntryPos& aPos,TInt aLength,TDes8& aDes) const; |
570 void DirReadL(const TEntryPos& aPos,TInt aLength,TDes8& aDes) const; |
571 void DirWriteL(const TEntryPos& aPos,const TDesC8& aDes); |
571 void DirWriteL(const TEntryPos& aPos,const TDesC8& aDes); |
572 |
572 |
573 void ReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset, TUint aFlag) const; |
573 void ReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset) const; |
574 void WriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint& aBadcluster, TUint& aGoodcluster, TUint aFlag); |
574 void WriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint& aBadcluster, TUint& aGoodcluster); |
575 |
575 |
576 void MoveToNextEntryL(TEntryPos& aPos) const; |
576 void MoveToNextEntryL(TEntryPos& aPos) const; |
577 void MoveToDosEntryL(TEntryPos& aPos,TFatDirEntry& anEntry) const; |
577 void MoveToDosEntryL(TEntryPos& aPos,TFatDirEntry& anEntry) const; |
578 void EnlargeL(TInt aSize); |
578 void EnlargeL(TInt aSize); |
579 void ReduceSizeL(TInt aPos,TInt aLength); |
579 void ReduceSizeL(TInt aPos,TInt aLength); |
701 |
701 |
702 void CheckFatForLoopsL(const TFatDirEntry& anEntry) const; |
702 void CheckFatForLoopsL(const TFatDirEntry& anEntry) const; |
703 void DoCheckFatForLoopsL(TUint32 aCluster, TUint32& aPreviousCluster, TUint32& aChangePreviousCluster, TUint32& aCount) const; |
703 void DoCheckFatForLoopsL(TUint32 aCluster, TUint32& aPreviousCluster, TUint32& aChangePreviousCluster, TUint32& aCount) const; |
704 void InitializeL(const TLocalDriveCaps& aLocDrvCaps, TBool aIgnoreFSInfo=EFalse); |
704 void InitializeL(const TLocalDriveCaps& aLocDrvCaps, TBool aIgnoreFSInfo=EFalse); |
705 |
705 |
706 void DoReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset, TUint aFlag) const; |
706 void DoReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset) const; |
707 void DoWriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint aLastcluster, TUint& aBadcluster, TUint& aGoodcluster, TUint aFlag); |
707 void DoWriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint aLastcluster, TUint& aBadcluster, TUint& aGoodcluster); |
708 |
708 |
709 TBool IsUniqueNameL(const TShortName& aName, TUint32 aDirCluster); |
709 TBool IsUniqueNameL(const TShortName& aName, TUint32 aDirCluster); |
710 TBool FindShortNameL(const TShortName& aName,TEntryPos& anEntryPos); |
710 TBool FindShortNameL(const TShortName& aName,TEntryPos& anEntryPos); |
711 void ReplaceClashingNameL(const TShortName& aNewName,const TEntryPos& anEntryPos); |
711 void ReplaceClashingNameL(const TShortName& aNewName,const TEntryPos& anEntryPos); |
712 TBool GenerateShortNameL(TUint32 aDirCluster,const TDesC& aLongName,TShortName& aShortName, TBool aForceRandomize=EFalse); |
712 TBool GenerateShortNameL(TUint32 aDirCluster,const TDesC& aLongName,TShortName& aShortName, TBool aForceRandomize=EFalse); |
860 void FlushStartClusterL(); |
860 void FlushStartClusterL(); |
861 TInt SeekToPosition(TUint aNewCluster, TUint aClusterOffset); |
861 TInt SeekToPosition(TUint aNewCluster, TUint aClusterOffset); |
862 void SetSeekIndexValueL(TUint aFileCluster,TUint aStoredCluster); |
862 void SetSeekIndexValueL(TUint aFileCluster,TUint aStoredCluster); |
863 void ResizeIndex(TInt aNewMult,TUint aNewSize); |
863 void ResizeIndex(TInt aNewMult,TUint aNewSize); |
864 TInt CalcSeekIndexSize(TUint aSize); |
864 TInt CalcSeekIndexSize(TUint aSize); |
|
865 TBool IsSeekBackwards(TUint aPos); |
865 void ClearIndex(TUint aNewSize); |
866 void ClearIndex(TUint aNewSize); |
866 void DoSetSizeL(TUint aSize, TBool aForceCachesFlush); |
867 void DoSetSizeL(TUint aSize, TBool aForceCachesFlush); |
867 void WriteFileSizeL(TUint aSize); |
868 void WriteFileSizeL(TUint aSize); |
868 |
869 |
869 //---------------------------- |
870 //---------------------------- |