Files
frame-processor/src/FrameProcessor/Configuration/MqttOptions.cs
2026-06-07 14:15:34 +02:00

36 lines
923 B
C#

using System.ComponentModel.DataAnnotations;
namespace FrameProcessor.Configuration;
/// <summary>
/// Bound from the <c>Mqtt</c> section of <c>appsettings.json</c>. See SPEC.md §6.1.
/// </summary>
public sealed class MqttOptions
{
public const string SectionName = "Mqtt";
[Required(AllowEmptyStrings = false)]
public string Host { get; set; } = string.Empty;
[Range(1, 65535)]
public int Port { get; set; } = 1883;
[Required(AllowEmptyStrings = false)]
public string ClientId { get; set; } = string.Empty;
public string? Username { get; set; }
public string? Password { get; set; }
public bool UseTls { get; set; }
[Required(AllowEmptyStrings = false)]
public string BaseTopic { get; set; } = "frames";
[Range(0, 2)]
public int PublishQos { get; set; } = 1;
[MinLength(1)]
public int[] RetryBackoffSeconds { get; set; } = Array.Empty<int>();
}