/// <summary> /// Initializes a new instance of the <see cref="CpuType"/> class. /// </summary> /// <param name="cpuService">The application layer CpuService.</param> /// <param name="logger">The NLog logger instance.</param> public CpuType(ICpuService cpuService, ILogger logger) { this.Field(x => x.Cores); this.Field(x => x.Model); this.Field(x => x.ScalingGovernor, true); this.Field("maxFrequency", x => x.MaximumFrequency); this.Field <CpuLoadStatusType>() .Name("LoadStatus") .ResolveAsync(async context => { logger.Debug("LoadStatus field"); return(await cpuService.GetLastLoadStatusAsync()); }); this.Connection <CpuLoadStatusType>() .Name("LoadStatuses") .Bidirectional() .ResolveAsync(async context => { logger.Debug("LoadStatuses connection"); var pagingInput = context.GetPagingInput(); var averageLoads = await cpuService.GetLoadStatusesAsync(pagingInput); return(averageLoads.ToConnection()); }); this.Field <CpuSensorsStatusType>() .Name("SensorsStatus") .ResolveAsync(async context => { logger.Debug("SensorsStatus field"); return(await cpuService.GetLastSensorsStatusAsync()); }); this.Connection <CpuSensorsStatusType>() .Name("SensorsStatuses") .Bidirectional() .ResolveAsync(async context => { logger.Debug("SensorsStatuses connection"); var pagingInput = context.GetPagingInput(); var temperatures = await cpuService.GetSensorsStatusesAsync(pagingInput); return(temperatures.ToConnection()); }); this.Field <CpuFrequencyType>() .Name("Frequency") .ResolveAsync(async context => { logger.Debug("Frequency field"); return(await cpuService.GetLastFrequencyAsync()); }); this.Connection <CpuFrequencyType>() .Name("Frequencies") .Bidirectional() .ResolveAsync(async context => { logger.Debug("Frequencies connection"); var pagingInput = context.GetPagingInput(); var frequencies = await cpuService.GetFrequenciesAsync(pagingInput); return(frequencies.ToConnection()); }); }