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);
}
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
GC.Collect();
double newSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead;
}
@@ -394,8 +394,8 @@ namespace DiscImageChef.Core.Devices.Dumping
dumpFile.Write(new byte[blockSize]);
}
currentSpeed = blockSize / (double)1048576 / (duration / 1000);
GC.Collect();
double newSpeed = blockSize / (double)1048576 / (duration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
currentBlock++;
}
@@ -439,7 +439,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
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();

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();
@@ -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;
}
@@ -828,7 +830,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
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();

View File

@@ -385,7 +385,8 @@ namespace DiscImageChef.Core.Devices.Dumping
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;
}
@@ -564,7 +565,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
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();

View File

@@ -604,7 +604,10 @@ namespace DiscImageChef.Core.Devices.Dumping
totalChkDuration += chkDuration;
if(currentBlock % 10 == 0)
currentSpeed = blockSize / (double)1048576 / (duration / 1000);
{
double newSpeed = blockSize / (double)1048576 / (duration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
}
currentBlock++;
currentSize += 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);
}
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
GC.Collect();
double newSpeed = (double)blockSize * blocksToRead / 1048576 / (duration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead;
}
@@ -422,7 +422,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
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();

View File

@@ -430,7 +430,8 @@ namespace DiscImageChef.Core.Devices.Dumping
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;
currentSector = i + 1;
resume.NextBlock = currentSector;
@@ -558,7 +559,8 @@ namespace DiscImageChef.Core.Devices.Dumping
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;
resume.NextBlock = currentSector;
}
@@ -765,7 +767,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double chkDuration = (chkEnd - chkStart).TotalMilliseconds;
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();

View File

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

View File

@@ -344,8 +344,8 @@ namespace DiscImageChef.Core.Devices.Scanning
}
}
currentSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000);
GC.Collect();
double newSpeed = (double)blockSize * blocksToRead / 1048576 / (cmdDuration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
}
end = DateTime.UtcNow;
@@ -402,7 +402,8 @@ namespace DiscImageChef.Core.Devices.Scanning
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;

View File

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