using System;
namespace ZB.MOM.WW.OtOpcUa.Host.Domain
{
///
/// Point-in-time runtime state of a single Galaxy runtime host ($WinPlatform or $AppEngine)
/// as tracked by the GalaxyRuntimeProbeManager. Surfaced on the status dashboard and
/// consumed by HealthCheckService so operators can detect a stopped host before
/// downstream clients notice the stale data.
///
public sealed class GalaxyRuntimeStatus
{
///
/// Gets or sets the Galaxy tag_name of the host (e.g., DevPlatform or
/// DevAppEngine).
///
public string ObjectName { get; set; } = "";
///
/// Gets or sets the Galaxy gobject_id of the host.
///
public int GobjectId { get; set; }
///
/// Gets or sets the Galaxy template category name — $WinPlatform or
/// $AppEngine. Used by the dashboard to group hosts by kind.
///
public string Kind { get; set; } = "";
///
/// Gets or sets the current runtime state.
///
public GalaxyRuntimeState State { get; set; }
///
/// Gets or sets the UTC timestamp of the most recent probe callback, whether it
/// reported success or failure. before the first callback.
///
public DateTime? LastStateCallbackTime { get; set; }
///
/// Gets or sets the UTC timestamp of the most recent transition.
/// Backs the dashboard "Since" column. in the initial Unknown
/// state before any transition.
///
public DateTime? LastStateChangeTime { get; set; }
///
/// Gets or sets the last ScanState value received from the probe, or
/// before the first update or when the last callback carried
/// a non-success item status (no value delivered).
///
public bool? LastScanState { get; set; }
///
/// Gets or sets the detail message from the most recent failure callback, cleared on
/// the next successful ScanState = true delivery.
///
public string? LastError { get; set; }
///
/// Gets or sets the cumulative number of callbacks where ScanState = true.
///
public long GoodUpdateCount { get; set; }
///
/// Gets or sets the cumulative number of callbacks where ScanState != true
/// or the item status reported failure.
///
public long FailureCount { get; set; }
}
}