123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System.Runtime.CompilerServices;
- using System.Threading;
- using App.Robot.Station.Logical.Worker;
- using Newtonsoft.Json;
- namespace App.Robot.Station.Logical
- {
- public class TaskItem
- {
- public int id;
- public long sumCount = 0;
- public long sumFailCount = 0;
- public long curCount = 0;
- public long failCount = 0;
- public long targetCount = 0;
- public TaskConfig config { get => config_; set { config_ = value; EventAfterSetConfig(); } }
- private TaskConfig config_;
- public int RunningThreadCount => worker.RunningThreadCount;
- public bool IsRunning => worker.IsRunning;
- [JsonIgnore]
- public IWorker worker { get; private set; }
- void EventAfterSetConfig()
- {
- var config = config_;
- targetCount = config.threadCount * config.loopCountPerThread;
- switch (config.type)
- {
- case "ApiClientAsync": worker = new Worker_ApiClientAsync(this); break;
- case "HttpClient": worker = new Worker_HttpClient(this); break;
- case "HttpUtil": worker = new Worker_HttpUtil(this); break;
- default: config.type = "ApiClient"; worker = new Worker_ApiClient(this); break;
- }
- }
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public void StepUp(bool success)
- {
- Interlocked.Increment(ref curCount);
- Interlocked.Increment(ref sumCount);
- if (!success)
- {
- Interlocked.Increment(ref sumFailCount);
- Interlocked.Increment(ref failCount);
- }
- }
- }
- }
|