using System;
using System.Collections.Generic;
using System.Linq;
namespace TINK.Services.BluetoothLock
{
public class TimeOutProvider : ITimeOutProvider
{
/// Maximum factor applied on timeout factor.
private readonly int MAXIMUMFACTORTIMEOUT = 4;
/// Default timeout to connect to bluetooth lock.
public static int DEFAULT_BLUETOOTHCONNECT_TIMEOUTSECONDS = 5;
public TimeOutProvider(IEnumerable timeOuts = null)
{
TimeOuts = timeOuts != null && timeOuts.Count() > 0
? timeOuts.ToList()
: new List { new TimeSpan(0, 0, DEFAULT_BLUETOOTHCONNECT_TIMEOUTSECONDS) };
}
private List TimeOuts { get; }
public TimeSpan MultiConnect => TimeOuts.ToArray()[0];
public TimeSpan GetSingleConnect(int countOfTry) => countOfTry < TimeOuts.Count
? TimeOuts.ToArray()[countOfTry]
: new TimeSpan(TimeOuts.ToArray()[0].Ticks * Math.Min(countOfTry, MAXIMUMFACTORTIMEOUT));
}
}