userlibandfileserver/fileserver/sfile/sf_file_cache.h
changeset 176 af6ec97d9189
parent 0 a41df078684a
child 299 b5a01337d018
--- a/userlibandfileserver/fileserver/sfile/sf_file_cache.h	Wed Jun 23 11:59:44 2010 +0100
+++ b/userlibandfileserver/fileserver/sfile/sf_file_cache.h	Wed Jun 23 12:52:28 2010 +0100
@@ -28,6 +28,9 @@
 
 //#define _DEBUG_READ_AHEAD
 
+// if writing sequentially, start flushing dirty data when the cache is half full
+//#define DOUBLE_BUFFERED_WRITING
+
 
 NONSHARABLE_CLASS(CFileCache) : public CFsDispatchObject
 	{
@@ -75,7 +78,8 @@
 
 	TInt DoReadBuffered(CFsMessageRequest& aMsgRequest, TUint aMode, CFsClientMessageRequest*& aNewRequest);
 	TInt DoWriteBuffered(CFsMessageRequest& aMsgRequest, CFsClientMessageRequest*& aNewRequest, TUint aMode);
-	TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TBool aFlushAll);
+	enum TFlushMode {EFlushSingle, EFlushHalf, EFlushAll};
+	TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TFlushMode aFlushMode);
 
 
 	inline TInt SegmentSize() const;
@@ -156,6 +160,11 @@
 	TBool iFileCacheReadAsync;
 	CFsClientMessageRequest* iReadAheadRequest;
 
+#ifdef DOUBLE_BUFFERED_WRITING
+	// sequential append-write detection
+	TInt iSequentialAppends;
+#endif
+
 	friend class TClosedFileUtils;
 	friend class TFsFileWriteDirty;
 	};