namespace ZB.MOM.WW.OtOpcUa.Core.Abstractions;
///
/// Sink for driver-health state-change notifications. The runtime DI wires the
/// Akka-DistributedPubSub-backed implementation; tests and dev-stub paths use
/// to opt out without changing call sites.
///
public interface IDriverHealthPublisher
{
///
/// Publishes a health snapshot for one driver instance. Implementations must be
/// non-blocking and tolerant of being called from any thread.
///
void Publish(
string clusterId,
string driverInstanceId,
DriverHealth health,
int errorCount5Min);
}
///
/// Drop-in no-op for tests and dev-stub paths. Production wires the Akka-backed
/// implementation in the Runtime project.
///
public sealed class NullDriverHealthPublisher : IDriverHealthPublisher
{
/// Singleton instance.
public static readonly NullDriverHealthPublisher Instance = new();
private NullDriverHealthPublisher() { }
///
public void Publish(
string clusterId,
string driverInstanceId,
DriverHealth health,
int errorCount5Min)
{ /* no-op */ }
}