equal
deleted
inserted
replaced
26 |
26 |
27 #include "sf_cache_client.h" |
27 #include "sf_cache_client.h" |
28 |
28 |
29 //#define _DEBUG_READ_AHEAD |
29 //#define _DEBUG_READ_AHEAD |
30 |
30 |
|
31 // if writing sequentially, start flushing dirty data when the cache is half full |
|
32 //#define DOUBLE_BUFFERED_WRITING |
|
33 |
31 |
34 |
32 NONSHARABLE_CLASS(CFileCache) : public CFsDispatchObject |
35 NONSHARABLE_CLASS(CFileCache) : public CFsDispatchObject |
33 { |
36 { |
34 public: |
37 public: |
35 static CFileCache* NewL(CFileShare& aShare); |
38 static CFileCache* NewL(CFileShare& aShare); |
73 |
76 |
74 void SetFileCacheFlags(CFileShare& aShare); |
77 void SetFileCacheFlags(CFileShare& aShare); |
75 |
78 |
76 TInt DoReadBuffered(CFsMessageRequest& aMsgRequest, TUint aMode, CFsClientMessageRequest*& aNewRequest); |
79 TInt DoReadBuffered(CFsMessageRequest& aMsgRequest, TUint aMode, CFsClientMessageRequest*& aNewRequest); |
77 TInt DoWriteBuffered(CFsMessageRequest& aMsgRequest, CFsClientMessageRequest*& aNewRequest, TUint aMode); |
80 TInt DoWriteBuffered(CFsMessageRequest& aMsgRequest, CFsClientMessageRequest*& aNewRequest, TUint aMode); |
78 TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TBool aFlushAll); |
81 enum TFlushMode {EFlushSingle, EFlushHalf, EFlushAll}; |
|
82 TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TFlushMode aFlushMode); |
79 |
83 |
80 |
84 |
81 inline TInt SegmentSize() const; |
85 inline TInt SegmentSize() const; |
82 inline TInt SegmentSizeLog2() const; |
86 inline TInt SegmentSizeLog2() const; |
83 inline TInt64 SegmentSizeMask() const; |
87 inline TInt64 SegmentSizeMask() const; |
154 TInt64 iLastReadPos; |
158 TInt64 iLastReadPos; |
155 TInt iLastReadLen; |
159 TInt iLastReadLen; |
156 TBool iFileCacheReadAsync; |
160 TBool iFileCacheReadAsync; |
157 CFsClientMessageRequest* iReadAheadRequest; |
161 CFsClientMessageRequest* iReadAheadRequest; |
158 |
162 |
|
163 #ifdef DOUBLE_BUFFERED_WRITING |
|
164 // sequential append-write detection |
|
165 TInt iSequentialAppends; |
|
166 #endif |
|
167 |
159 friend class TClosedFileUtils; |
168 friend class TClosedFileUtils; |
160 friend class TFsFileWriteDirty; |
169 friend class TFsFileWriteDirty; |
161 }; |
170 }; |
162 |
171 |
163 |
172 |