namespace ZB.MOM.WW.ScadaBridge.DelmiaNotifier; /// Whether a single POST attempt reached the server () or never did (). internal enum AttemptKind { Connected, ConnectFailed, } /// Result of one POST attempt against a single base URL. /// Did the attempt reach the server? /// HTTP status when ; 0 otherwise. /// Parsed response body on a 2xx; null otherwise. /// Connection/exception detail when ; null otherwise. internal sealed record AttemptOutcome(AttemptKind Kind, int StatusCode, RecipeDownloadResult? Body, string? Error); /// Seam over a single recipe-download POST attempt, so the failover loop is testable without real HTTP. internal interface IRecipeSender { Task SendAsync(string baseUrl, RecipeDownload payload, CancellationToken ct); }