fc918d4679
Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
28 lines
1.4 KiB
C#
28 lines
1.4 KiB
C#
using ZB.MOM.WW.Configuration;
|
|
|
|
namespace ZB.MOM.WW.ScadaBridge.NotificationService;
|
|
|
|
/// <summary>
|
|
/// Validates <see cref="NotificationOptions"/> at startup. The values are the SMTP fallback used
|
|
/// by the central Email delivery adapter when the deployed <c>SmtpConfiguration</c> leaves the
|
|
/// corresponding field unset: <see cref="NotificationOptions.ConnectionTimeoutSeconds"/> becomes an
|
|
/// SMTP connect timeout and <see cref="NotificationOptions.MaxConcurrentConnections"/> caps the
|
|
/// connection pool — a non-positive value there is not a usable fallback. Registered with
|
|
/// <c>ValidateOnStart()</c> so a bad <c>ScadaBridge:Notification</c> section fails fast at boot with
|
|
/// a clear, key-naming message.
|
|
/// </summary>
|
|
public sealed class NotificationOptionsValidator : OptionsValidatorBase<NotificationOptions>
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Validate(ValidationBuilder builder, NotificationOptions options)
|
|
{
|
|
builder.RequireThat(options.ConnectionTimeoutSeconds > 0,
|
|
$"ScadaBridge:Notification:ConnectionTimeoutSeconds must be greater than zero " +
|
|
$"(was {options.ConnectionTimeoutSeconds}); it is the SMTP connect-timeout fallback.");
|
|
|
|
builder.RequireThat(options.MaxConcurrentConnections > 0,
|
|
$"ScadaBridge:Notification:MaxConcurrentConnections must be greater than zero " +
|
|
$"(was {options.MaxConcurrentConnections}); it caps the SMTP connection pool.");
|
|
}
|
|
}
|