Ejemplo n.º 1
0
        public override async Task <GetTemperatureResponse> GetTemperature(GetTemperatureRequest request, ServerCallContext context)
        {
            _logger.LogInformation("Temperature requested by gRPC!");

            await _gpioService.Initialize();

            var temperature = await _gpioService.ReadTemperature();

            return(new GetTemperatureResponse
            {
                Temperature = temperature
            });
        }
Ejemplo n.º 2
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            try
            {
                await Task.Delay(TimeSpan.FromMinutes(2), stoppingToken);

                _logger.LogInformation($"{nameof(SessionWorker)} started!");

                await _gpioService.Initialize();

                _logger.LogInformation("GPIO initialized.");

                while (!stoppingToken.IsCancellationRequested)
                {
                    try
                    {
                        await Task.Delay(TimeSpan.FromSeconds(10), stoppingToken);

                        var activeSession = await _sessionClient.GetActiveSession();

                        if (activeSession != null)
                        {
                            await _sessionService.UpdateSession(activeSession);

                            _logger.LogInformation("Active session updated.");
                        }
                        else
                        {
                            var isKilled = await _sessionService.KillSession();

                            if (isKilled)
                            {
                                _logger.LogInformation("Active session killed.");
                            }
                            else
                            {
                                _logger.LogInformation("No active session.");
                            }
                        }
                    }
                    catch (TaskCanceledException)
                    {
                        // This is most likely due to the Task.Delay being cancelled.
                    }
                }

                await _gpioService.Shutdown();

                _logger.LogInformation("GPIO shutdown.");

                _logger.LogInformation($"{nameof(SessionWorker)} stopped!");
            }
            catch (Exception ex)
            {
                _logger.LogError($"{nameof(SessionWorker)} throws Exception: {ex.Message}!");
                await _logService.LogException(
                    "SessionWorker throws Exception!",
                    "SessionWorker throws Exception!", ex);
            }
        }