using ZB.MOM.WW.LmxProxy.Client.Domain; namespace ScadaLink.DataConnectionLayer.Adapters; /// /// Subscription handle returned by . /// Disposing the subscription stops receiving updates. /// public interface ILmxSubscription : IAsyncDisposable { } /// /// Abstraction over the LmxProxy SDK client for testability. /// The production implementation delegates to the real /// library. /// public interface ILmxProxyClient : IAsyncDisposable { bool IsConnected { get; } Task ConnectAsync(CancellationToken cancellationToken = default); Task DisconnectAsync(); Task ReadAsync(string address, CancellationToken cancellationToken = default); Task> ReadBatchAsync(IEnumerable addresses, CancellationToken cancellationToken = default); Task WriteAsync(string address, TypedValue value, CancellationToken cancellationToken = default); Task WriteBatchAsync(IDictionary values, CancellationToken cancellationToken = default); Task SubscribeAsync( IEnumerable addresses, Action onUpdate, Action? onStreamError = null, CancellationToken cancellationToken = default); } /// /// Factory for creating instances configured /// with host, port, and optional API key. /// public interface ILmxProxyClientFactory { ILmxProxyClient Create(string host, int port, string? apiKey, bool useTls = false); }