public TemperatureWorker( ILogger <TemperatureWorker> logger, ITemperatureReader temperatureReader, IHubContext <TemperatureHub> temperatureHubContext, ITemperatureSource temperatureSource) { this.logger = logger; this.temperatureReader = temperatureReader; this.temperatureHubContext = temperatureHubContext; this.temperatureSource = temperatureSource; }
static void Main(string[] args) { ITemperatureSource source = setupTemperatureSource(); source.RegisterListener(new ConsoleListener()); source.RegisterListener(setupThermometer()); while (source.HasData()) { source.EmitData(); } Console.ReadLine(); }
public TemperatureController(ITemperatureSource temperatureSource) { this.temperatureSource = temperatureSource; }
public RoomThermalManager( IRoom room, float initialThermalPixelSize, float initialThermalTickDuration, ITemperatureSource outsideTemperatureSource, ITemperatureSource <Vector3> initialRoomTemperatureSource, IEnumerable <IThermalObject> initialThermalObjects = null) { #region Thermal Pixel Size Validation if (float.IsNaN(initialThermalPixelSize)) { throw new ArgumentOutOfRangeException(nameof(initialThermalPixelSize), initialThermalPixelSize, "NaN is an invalid size value."); } if (float.IsPositiveInfinity(initialThermalPixelSize)) { throw new ArgumentOutOfRangeException(nameof(initialThermalPixelSize), initialThermalPixelSize, "Positive infinity is an invalid size value."); } if (float.IsNegativeInfinity(initialThermalPixelSize)) { throw new ArgumentOutOfRangeException(nameof(initialThermalPixelSize), initialThermalPixelSize, "Negative infinity is an invalid size value."); } if (initialThermalPixelSize <= 0f) { throw new ArgumentOutOfRangeException(nameof(initialThermalPixelSize), initialThermalPixelSize, "Zero or negative values are invalid size values."); } #endregion #region Thermal Tick Duration Validation if (float.IsNaN(initialThermalTickDuration)) { throw new ArgumentOutOfRangeException(nameof(initialThermalTickDuration), initialThermalTickDuration, "NaN is an invalid duration value."); } if (float.IsPositiveInfinity(initialThermalTickDuration)) { throw new ArgumentOutOfRangeException(nameof(initialThermalTickDuration), initialThermalTickDuration, "Positive infinity is an invalid duration value."); } if (float.IsNegativeInfinity(initialThermalTickDuration)) { throw new ArgumentOutOfRangeException(nameof(initialThermalTickDuration), initialThermalTickDuration, "Negative infinity is an invalid duration value."); } if (initialThermalTickDuration <= 0f) { throw new ArgumentOutOfRangeException(nameof(initialThermalTickDuration), initialThermalTickDuration, "Zero or negative values are invalid duration values."); } #endregion _thermalUpdateLock = new object(); Room = room ?? throw new ArgumentNullException(nameof(room)); _thermalPixelSize = initialThermalPixelSize; _thermalPixelSizeSquared = _thermalPixelSize * _thermalPixelSize; _thermalPixelSizeCubed = _thermalPixelSizeSquared * _thermalPixelSize; _thermalTickDuration = initialThermalTickDuration; _outsideTemperatureSource = outsideTemperatureSource ?? throw new ArgumentNullException(nameof(outsideTemperatureSource)); _outsideTemperature = outsideTemperatureSource.GetTemperature(); _stationaryThermalObjects = new List <IThermalObject>(); _movableThermalObjects = new List <IThermalObject>(); _movableThermalObjectsPositionCache = new Dictionary <IThermalObject, (Vector2 Position, SurfaceDescriptor?Surface)>(); if (initialThermalObjects != null) { foreach (IThermalObject thermalObject in initialThermalObjects) { if (thermalObject.CanNotChangePosition) { _stationaryThermalObjects.Add(thermalObject); } else { _movableThermalObjects.Add(thermalObject); } } } _totalTemperatureStatisticsBuilder = new TemperatureStatisticsBuilder(); _capturedTemperatureStatisticsBuilder = new TemperatureStatisticsBuilder(); _surfaceAreaPerThermalPixelOfThermalObject = new Dictionary <IThermalObject, float>(); CalculateThermalPixels(initialThermalPixelSize, initialRoomTemperatureSource); }