namespace NATS.Server; /// /// MQTT protocol configuration options. /// Corresponds to Go server/opts.go MQTTOpts struct. /// Config is parsed and stored but no MQTT listener is started yet. /// public sealed class MqttOptions { // Network public string Host { get; set; } = ""; public int Port { get; set; } // Auth override (MQTT-specific, separate from global auth) public string? NoAuthUser { get; set; } public string? Username { get; set; } public string? Password { get; set; } public string? Token { get; set; } public double AuthTimeout { get; set; } // TLS public string? TlsCert { get; set; } public string? TlsKey { get; set; } public string? TlsCaCert { get; set; } public bool TlsVerify { get; set; } public double TlsTimeout { get; set; } = 2.0; public bool TlsMap { get; set; } public HashSet? TlsPinnedCerts { get; set; } // JetStream integration public string? JsDomain { get; set; } public int StreamReplicas { get; set; } public int ConsumerReplicas { get; set; } public bool ConsumerMemoryStorage { get; set; } public TimeSpan ConsumerInactiveThreshold { get; set; } // QoS public TimeSpan AckWait { get; set; } = TimeSpan.FromSeconds(30); public ushort MaxAckPending { get; set; } public TimeSpan JsApiTimeout { get; set; } = TimeSpan.FromSeconds(5); public bool SessionPersistence { get; set; } = true; public TimeSpan SessionTtl { get; set; } = TimeSpan.FromHours(1); public bool Qos1PubAck { get; set; } = true; public bool HasTls => TlsCert != null && TlsKey != null; }