EncUtils.cs 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. using CliWrap.Buffered;
  2. using Ips.Library.Basic;
  3. using Ips.Library.Entity;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. namespace Ips.Enc
  10. {
  11. public static class EncUtils
  12. {
  13. static readonly string CliPath = PathUtil.GetAssemblyPath("ipscli", "enc", "enc.exe");
  14. public static async Task<ExeResult<Timeslot[]>> Get(string fileName, EncOptions arg, int timeout = 60, CancellationToken token = default)
  15. {
  16. var cli = CliWrap.Cli.Wrap(CliPath)
  17. .WithArguments(args =>
  18. {
  19. args.Add(fileName);
  20. args.Add("-f").Add(arg.Fs);
  21. args.Add("-a").Add(arg.AverageCnt);
  22. args.Add("-t").Add(timeout.ToString());
  23. });
  24. var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout));
  25. var result = Timeslot.FromListString(res.StandardOutput);
  26. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  27. }
  28. }
  29. }