Пример #1
0
        /// <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());
            });
        }