36 lines
923 B
C#
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>();
|
|
}
|