OneDrive Backup

OneDrive Backup
This commit is contained in:
2023-07-28 22:36:06 +07:00
parent e1c6e91a0a
commit d70d81ebdf
244 changed files with 75229 additions and 0 deletions
@@ -0,0 +1,49 @@
using System.Diagnostics;
namespace onedrive_backup.Graph
{
public class TransferSpeedHelper
{
private Stopwatch _stopWatch = new Stopwatch();
private double _prevProgress = 0;
private double _prevTimeStamp = 0;
private double _speedCap;
public TransferSpeedHelper(double? speedCapKBSec)
{
_speedCap = speedCapKBSec != null ? speedCapKBSec.Value * 1024 : double.MaxValue;
}
public void Start()
{
Reset();
_stopWatch.Start();
}
public void Reset()
{
_stopWatch.Reset();
_prevTimeStamp = 0;
_prevProgress = 0;
}
public (double delay, double ratePerSecond) MarkAndCalcThrottle(double progress)
{
double bytesTransfered = progress - _prevProgress;
var ellapsedMS = _stopWatch.ElapsedMilliseconds;
double timefromPrev = ellapsedMS - _prevTimeStamp;
double ratePerSecond = 1000 * bytesTransfered / timefromPrev;
_prevTimeStamp = ellapsedMS;
_prevProgress = progress;
if (ratePerSecond > _speedCap)
{
var targetTimeForSpeedMS = (bytesTransfered / _speedCap) * 1000;
var remainingTimeToWait = targetTimeForSpeedMS - _prevTimeStamp;
return (remainingTimeToWait, ratePerSecond);
}
return (0, ratePerSecond);
}
}
}