using CliWrap; using CliWrap.Buffered; using Ips.Library.Basic; using Ips.Library.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Channels; using System.Threading.Tasks; namespace Ips.DetAlgorithm { public static class DetDmUtil { static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "detdm", "detdm.exe"); /// /// DAMA检测 /// public static async Task> Dama(string filename, DetDamaOptions arg, int timeout = 60, CancellationToken token = default) { var cli = Cli.Wrap(CliFile) .WithArguments(args => { args.Add("dama"); args.Add(filename); args.Add("-f").Add(arg.Fs); args.Add("-c").Add(arg.Channel); args.Add("-s").Add(arg.Sparese); args.Add("--ccow").Add(arg.Ccow.ToString()); args.Add("--full").Add(arg.Full.ToString()); }); var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout)); var result = Timeslot.FromListString(res.StandardOutput); return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } /// /// 非Dama检测 /// public static async Task> Det(string filename, DetNotDamaOptions arg, int timeout = 60, CancellationToken token = default) { string filetest = PathUtil.GetBasePath("ipscli", "detdm", "detdm.exe"); var cli = Cli.Wrap(CliFile) .WithArguments(args => { args.Add("det"); args.Add(filename); args.Add("-w").Add(arg.BandWidth); }); var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout)); var result = Timeslot.FromListString(res.StandardOutput); return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } } }