Check speed doesn't become infinite because command duration was too low.

This commit is contained in:
2017-12-22 22:02:10 +00:00
parent 78437ef90c
commit 19914db94f
9 changed files with 40 additions and 26 deletions

View File

@@ -277,8 +277,8 @@ namespace DiscImageChef.Core.Devices.Dumping
dumpLog.WriteLine("Error reading {0} blocks from block {1}.", blocksToRead, i); dumpLog.WriteLine("Error reading {0} blocks from block {1}.", blocksToRead, i);
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead; resume.NextBlock = i + blocksToRead;
} }
@@ -394,8 +394,8 @@ namespace DiscImageChef.Core.Devices.Dumping
dumpFile.Write(new byte[blockSize]); dumpFile.Write(new byte[blockSize]);
} }
currentSpeed = blockSize / (double)1048576 / (duration / 1000); double newSpeed = blockSize / (double)1048576 / (duration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
currentBlock++; currentBlock++;
} }
@@ -439,7 +439,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds; double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
totalChkDuration += chkDuration; totalChkDuration += chkDuration;
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
DicConsole.WriteLine(); DicConsole.WriteLine();

View File

@@ -428,7 +428,8 @@ namespace DiscImageChef.Core.Devices.Dumping
} }
} }
currentSpeed = blockSize / (double)1048576 / (cmdDuration / 1000); double newSpeed = blockSize / (double)1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
dumpFile.Close(); dumpFile.Close();
@@ -616,7 +617,8 @@ namespace DiscImageChef.Core.Devices.Dumping
} }
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead; resume.NextBlock = i + blocksToRead;
} }
@@ -828,7 +830,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds; double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
totalChkDuration += chkDuration; totalChkDuration += chkDuration;
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
tracks[t].Checksums = trkChk.End().ToArray(); tracks[t].Checksums = trkChk.End().ToArray();

View File

@@ -385,7 +385,8 @@ namespace DiscImageChef.Core.Devices.Dumping
dumpLog.WriteLine("Error reading {0} blocks from block {1}.", blocksToRead, i); dumpLog.WriteLine("Error reading {0} blocks from block {1}.", blocksToRead, i);
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000); double newSpeed= (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead; resume.NextBlock = i + blocksToRead;
} }
@@ -564,7 +565,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds; double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
totalChkDuration += chkDuration; totalChkDuration += chkDuration;
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
DicConsole.WriteLine(); DicConsole.WriteLine();

View File

@@ -604,7 +604,10 @@ namespace DiscImageChef.Core.Devices.Dumping
totalChkDuration += chkDuration; totalChkDuration += chkDuration;
if(currentBlock % 10 == 0) if(currentBlock % 10 == 0)
currentSpeed = blockSize / (double)1048576 / (duration / 1000); {
double newSpeed = blockSize / (double)1048576 / (duration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
}
currentBlock++; currentBlock++;
currentSize += blockSize; currentSize += blockSize;
currentFileSize += blockSize; currentFileSize += blockSize;

View File

@@ -330,8 +330,8 @@ namespace DiscImageChef.Core.Devices.Dumping
dumpLog.WriteLine("Error reading {0} blocks from block {1}.", blocksToRead, i); dumpLog.WriteLine("Error reading {0} blocks from block {1}.", blocksToRead, i);
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead; resume.NextBlock = i + blocksToRead;
} }
@@ -422,7 +422,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds; double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
totalChkDuration += chkDuration; totalChkDuration += chkDuration;
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (chkDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
DicConsole.WriteLine(); DicConsole.WriteLine();

View File

@@ -430,7 +430,8 @@ namespace DiscImageChef.Core.Devices.Dumping
foreach(string senseLine in senseLines) dumpLog.WriteLine(senseLine); foreach(string senseLine in senseLines) dumpLog.WriteLine(senseLine);
} }
currentSpeed = (double)BLOCK_SIZE * blocksToRead / 1048576 / (cmdDuration / 1000); double newSpeed = (double)BLOCK_SIZE * blocksToRead / 1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
blocksToRead = saveBlocksToRead; blocksToRead = saveBlocksToRead;
currentSector = i + 1; currentSector = i + 1;
resume.NextBlock = currentSector; resume.NextBlock = currentSector;
@@ -558,7 +559,8 @@ namespace DiscImageChef.Core.Devices.Dumping
foreach(string senseLine in senseLines) dumpLog.WriteLine(senseLine); foreach(string senseLine in senseLines) dumpLog.WriteLine(senseLine);
} }
currentSpeed = (double)BLOCK_SIZE * blocksToRead / 1048576 / (cmdDuration / 1000); double newSpeed = (double)BLOCK_SIZE * blocksToRead / 1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
currentSector += blocksToRead; currentSector += blocksToRead;
resume.NextBlock = currentSector; resume.NextBlock = currentSector;
} }
@@ -765,7 +767,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds; double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
totalChkDuration += chkDuration; totalChkDuration += chkDuration;
currentSpeed = (double)BLOCK_SIZE * blocksToRead / 1048576 / (chkDuration / 1000); double newSpeed = (double)BLOCK_SIZE * blocksToRead / 1048576 / (chkDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
DicConsole.WriteLine(); DicConsole.WriteLine();

View File

@@ -157,8 +157,8 @@ namespace DiscImageChef.Core.Devices.Scanning
ibgLog.Write(i, 0); ibgLog.Write(i, 0);
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
end = DateTime.UtcNow; end = DateTime.UtcNow;
@@ -237,8 +237,8 @@ namespace DiscImageChef.Core.Devices.Scanning
ibgLog.Write(currentBlock, 0); ibgLog.Write(currentBlock, 0);
} }
currentSpeed = blockSize / (double)1048576 / (duration / 1000); double newSpeed = blockSize / (double)1048576 / (duration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
currentBlock++; currentBlock++;
} }

View File

@@ -344,8 +344,8 @@ namespace DiscImageChef.Core.Devices.Scanning
} }
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
end = DateTime.UtcNow; end = DateTime.UtcNow;
@@ -402,7 +402,8 @@ namespace DiscImageChef.Core.Devices.Scanning
ibgLog.Write(i, 0); ibgLog.Write(i, 0);
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
end = DateTime.UtcNow; end = DateTime.UtcNow;

View File

@@ -188,8 +188,8 @@ namespace DiscImageChef.Core.Devices.Scanning
ibgLog.Write(i, 0); ibgLog.Write(i, 0);
} }
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000); double newSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
GC.Collect(); if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
} }
end = DateTime.UtcNow; end = DateTime.UtcNow;