using Aurora.Api; using Hermes; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VisionCommon { internal abstract class Updater { protected Logger _logger; protected double _machineVersion; protected double _swVersion; public Updater(string logTag, double machineVersion, double swVersion) { _logger = new Logger(logTag); _machineVersion = machineVersion; _swVersion = swVersion; } public int Update(JToken machineToken, double machineVersion, double swVersion) { if (!IsSupportVersion(machineVersion, swVersion)) { return E2.NOT_SUPPORTED; } if (machineVersion < swVersion) { return Upgrade(machineToken); } else if (swVersion < machineVersion) { return Downgrade(machineToken); } return E1.GENERIC; } public bool IsSupportVersion(double machineVersion, double swVersion) { if (MathUtil.Equals(_machineVersion, machineVersion, 0.01) && MathUtil.Equals(_swVersion, swVersion, 0.01)) { return true; } else if (MathUtil.Equals(_machineVersion, swVersion, 0.01) && MathUtil.Equals(_swVersion, machineVersion, 0.01)) { return true; } return false; } protected abstract int Upgrade(JToken machineToken); protected abstract int Downgrade(JToken machineToken); } }