EphTleUtil_old.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using CliWrap;
  2. using CliWrap.Buffered;
  3. using Ips.Library.Basic;
  4. using Ips.Library.Entity;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace Ips.EphAlgorithm
  11. {
  12. public class EphTleUtil
  13. {
  14. const string fmtTime = "yyyy-MM-dd HH:mm:ss";
  15. static readonly string CliFile = PathUtil.GetAssemblyPath("ipscli", "ephtle", "ephtle.exe");
  16. static readonly object obj = new object();
  17. public static async Task<ExeResult<EphResult>> Get(string line1, string line2, DateTime time, CancellationToken token = default)
  18. {
  19. var cli = Cli.Wrap(CliFile)
  20. .WithArguments(new[] { line1, line2, time.ToString(fmtTime) });
  21. var res = await RunEphCliAsync(cli, token);
  22. var result = new EphResult(res.StandardOutput);
  23. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  24. }
  25. public static async Task<ExeResult<EphResult[]>> GetList(string line1, string line2, DateTime[] times, CancellationToken token = default)
  26. {
  27. const string CommandName = "list";
  28. List<string> args = new List<string>();
  29. args.AddRange(new[] { CommandName, line1, line2 });
  30. args.AddRange(times.Select(m => m.ToString(fmtTime)));
  31. var cli = Cli.Wrap(CliFile).WithArguments(args);
  32. var res = await RunEphCliAsync(cli, token);
  33. var result = EphResult.FromListString(res.StandardOutput);
  34. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  35. }
  36. public static async Task<ExeResult<EphResult[]>> GetRange(string line1, string line2, DateTime startTime, DateTime endTime, int interval = 1, CancellationToken token = default)
  37. {
  38. const string CommandName = "range";
  39. var cli = Cli.Wrap(CliFile)
  40. .WithArguments(new[] { CommandName, line1, line2, startTime.ToString(fmtTime), endTime.ToString(fmtTime), "-i", interval.ToString() });
  41. var res =await RunEphCliAsync(cli, token);
  42. var result = EphResult.FromListString(res.StandardOutput);
  43. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  44. }
  45. private static async Task<BufferedCommandResult> RunEphCliAsync(Command cli, CancellationToken token)
  46. {
  47. try
  48. {
  49. Monitor.Enter(obj);
  50. return await cli.ExecuteBufferedAsync(token);
  51. }
  52. finally
  53. {
  54. Monitor.Exit(obj);
  55. }
  56. }
  57. }
  58. }