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);
}
}
}