2nd Version ...
see file ...
Greets
Jan-Simon
Index: src/core/Sync/SyncFile.cs
===================================================================
--- src/core/Sync/SyncFile.cs (Revision 6842)
+++ src/core/Sync/SyncFile.cs (Arbeitskopie)
@@ -96,7 +96,7 @@
{
try
{
- //Log.log.Debug("Reading File {0} : offset = {1}", file, ReadPosition);
+ Log.log.Debug("Reading File {0} : offset = {1}", file, ReadPosition);
return workStream.Read(stream, count);
}
catch (Exception ex)
@@ -146,7 +146,7 @@
SetupFileNames(node, sessionID);
Log.log.Debug("Opening File {0}", file);
FileInfo fi = new FileInfo(file);
- if (Store.IsEnterpriseServer || fi.Length > (1024 * 100000))
+ if (Store.IsEnterpriseServer || fi.Length > (1024 * 1000))
{
workStream = new StreamStream(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read));
workFile = null;
Index: src/core/Sync/StreamStream.cs
===================================================================
--- src/core/Sync/StreamStream.cs (Revision 6842)
+++ src/core/Sync/StreamStream.cs (Arbeitskopie)
@@ -40,7 +40,8 @@
static int buffSize = 1024 * 64;
AutoResetEvent writeComplete = new AutoResetEvent(true);
Exception exception;
-
+ AutoResetEvent allComplete = new AutoResetEvent(true);
+ int myinstance = 0;
private static readonly ISimiasLog log = SimiasLogManager.GetLogger(typeof(StreamStream));
@@ -203,6 +204,13 @@
/// <returns>The number of bytes read.</returns>
public int Read(Stream outStream, int count)
{
+ AutoResetEvent[] eventArray = new AutoResetEvent[2];
+ eventArray[0] = allComplete;
+ eventArray[1] = writeComplete;
+ WaitHandle.WaitAll(eventArray);
+ writeComplete.Set();
+
+
wStream = outStream;
int bytesLeft = count;
while(bytesLeft > 0)
@@ -221,6 +229,7 @@
}
writeComplete.WaitOne();
writeComplete.Set();
+ allComplete.Set();
wStream = null;
return count - bytesLeft;
}
_______________________________________________
ifolder-dev mailing list
[email protected]
http://forge.novell.com/mailman/listinfo/ifolder-dev