namespace ZB.MOM.WW.OtOpcUa.Commons.OpcUa; /// /// Late-binding adapter that holds an inner reference /// swappable at runtime. Mirrors : Akka actors resolve /// the publisher at DI time, but the production SdkServiceLevelPublisher only exists /// after StandardServer.Start. The Host's hosted service swaps the inner once the SDK /// is up; until then writes route through . /// public sealed class DeferredServiceLevelPublisher : IServiceLevelPublisher { private volatile IServiceLevelPublisher _inner = NullServiceLevelPublisher.Instance; /// Swap the underlying publisher. Pass null to revert to the Null no-op. public void SetInner(IServiceLevelPublisher? inner) => _inner = inner ?? NullServiceLevelPublisher.Instance; public void Publish(byte serviceLevel) => _inner.Publish(serviceLevel); }