private void RunInner(LightStateHandler fromRedToGreen, LightStateHandler fromGreenToRed)
 {
     for (int i = 0; i < _loops; i++)
     {
         fromRedToGreen.Invoke();
         fromGreenToRed.Invoke();
     }
 }
        /// <summary>
        /// Start the traffic light activity
        /// </summary>
        public void Run()
        {
            LightStateHandler fromRedToGreen = SwitchToRed;

            fromRedToGreen += SwitchToYellow;

            LightStateHandler fromGreenToRed = SwitchToGreen;

            fromGreenToRed += SwitchToYellow;

            RunInner(fromRedToGreen, fromGreenToRed);
            Console.ForegroundColor = ConsoleColor.White;
        }
Exemplo n.º 3
0
        public Task <bool> ChangeLightState(HueLightStatePutDto statePutDto)
        {
            bool result = false;

            return(Task.Run <bool>(async() =>
            {
                try
                {
                    var currentState = await this.GetInfo(statePutDto.Id) ?? throw new Exception("Lampe mit der ID {statePutDto.Id} konnte nicht gefunden werden !! Ist diese Registriert ? ");

                    var content = new LightStateHandler(this._logger, this._mapper).GetSwitchStateContent(currentState, statePutDto);

                    if (content.IsNecessary.HasValue && content.IsNecessary.Value)
                    {
                        var response = await this._configuration["BridgeIP"]
                                       .AppendPathSegments("api", this._configuration["DefaultApiUser"], "lights", statePutDto.Id, "state")
                                       .ToUri()
                                       .PutAsJsonAsync(content.content);

                        return this._responseHandler.ResponseContainsErrors(response);
                    }

                    else
                    {
                        if (content.IsNecessary.HasValue)
                        {
                            this._logger?.LogInformation("Lampe hat einen ungültigen Status und kann nicht geändert werden");

                            result = true;
                        }

                        else
                        {
                            this._logger?.LogCritical("Serializierung hat nicht funktioniert bitte, Log ansehen");

                            result = false;
                        }
                    }

                    return result;
                }

                catch (Exception ex)
                {
                    this._logger.LogError(ex, "Generelle Exception während ChangeLightState");
                    return false;
                }
            }));
        }