using System.Collections.Generic; using System.Linq; namespace ZB.MOM.WW.MxGateway.Worker.Bootstrap; public sealed class WorkerBootstrapResult { private WorkerBootstrapResult( WorkerExitCode exitCode, WorkerOptions? options, IReadOnlyList errors) { ExitCode = exitCode; Options = options; Errors = errors; } /// /// Gets the worker process exit code. /// public WorkerExitCode ExitCode { get; } /// /// Gets the bootstrap options if bootstrap succeeded. /// public WorkerOptions? Options { get; } /// /// Gets the list of bootstrap errors if any. /// public IReadOnlyList Errors { get; } /// /// Gets a value indicating whether bootstrap succeeded. /// public bool Succeeded => ExitCode == WorkerExitCode.Success; /// /// Creates a successful bootstrap result with the given options. /// /// Bootstrap options. /// Successful bootstrap result. public static WorkerBootstrapResult Success(WorkerOptions options) { return new WorkerBootstrapResult(WorkerExitCode.Success, options, []); } /// /// Creates a failed bootstrap result with the given exit code and errors. /// /// Worker exit code. /// Bootstrap errors. /// Failed bootstrap result. public static WorkerBootstrapResult Failure(WorkerExitCode exitCode, IEnumerable errors) { return new WorkerBootstrapResult(exitCode, null, errors.ToArray()); } }