12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using CliWrap;
- using Ips.CorAlgorithm;
- using Ips.Library.Entity;
- using Ips.Library.SvrHub;
- using Ips.Sps.Scheduling.Entities;
- using Ips.Sps.Scheduling.SigAds;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using static DevExpress.Xpo.Helpers.AssociatedCollectionCriteriaHelper;
- namespace Ips.Sps.Scheduling.SigProces
- {
- public abstract class ProcWorkerBase
- {
- public ProcWorkerBase(RunTsk tsk)
- {
- CurrentTsk = tsk;
- }
- public RunTsk CurrentTsk { get; protected set; }
- public event EventHandler<ProcSigCompeletedEventArgs> ProcSigCompleted;
- public abstract void Execute(AdSigResult adResult, CancellationToken token);
- protected virtual void OnProcSigCompleted(ProcSigCompeletedEventArgs arg)
- {
- ProcSigCompleted?.Invoke(this, arg);
- }
- protected virtual ExeResult<CorResult[]> SigCor(AdSigResult adRes, RunSig sig, string file1, string file2, CorOptions corOption, CancellationToken token)
- {
- ExeResult<CorResult[]> corExeResult;
- //如果小于101k,使用CPU参估,否则使用GPU
- if (sig.BandWidth < 101000)
- {
- corExeResult = CocUtil.Calc(file1, file2, corOption, token: token).Result;
- }
- else
- {
- //var svr = SvrHub.Instance.GetRandomOne(EnumSvrType.GpuSvr);
- var svr = SvrHub.Instance.GetRandomOne(EnumSvrType.CpuSvr);
- string url = svr.BaseHttpAddr.AppendUrlSuffix("api/cg/start");
- var dto = new CorParams()
- {
- AdFileDownloadUrl = adRes.AdFileDownloadUrl,
- File1 = file1,
- File2 = file2,
- AddZero = corOption.AddZero,
- DataLen = corOption.DataLen,
- DfoCorr = corOption.DfoCorr,
- DfoRange = corOption.DfoRange,
- DtoCenter = corOption.DtoCenter,
- DtoCorr = corOption.DtoCorr,
- DtoRange = corOption.DtoRange,
- Fs = corOption.Fs,
- MergeType = corOption.MergeType,
- OffsetType = corOption.OffsetType,
- Snr = corOption.Snr,
- TimeOffset = corOption.TimeOffset,
- Timeslots = corOption.Timeslots,
- };
- var ajaxRes = HttpHelper.PostRequestAsync<CorResult[]>(url, dto, token).Result;
- if (ajaxRes.code != 200)
- {
- throw new Exception(ajaxRes.msg);
- }
- return ExeResult.Create(ajaxRes.data, "", DateTime.Now, DateTime.Now, 0, "");
- ////#warning 强制停止有时会蓝屏,先不强制停止
- //corExeResult = CogUtil.Calc(file1, file2, corOption, token: token).Result;
- ////corExeResult = CorGpuUtil.Calc(file1, file2, corOption).Result;
- }
- return corExeResult;
- }
- }
- }
|