Files
scadalink-design/deprecated/ILmxProxyClient.cs
Joseph Doherty 9dccf8e72f deprecate(lmxproxy): move all LmxProxy code, tests, and docs to deprecated/
LmxProxy is no longer needed. Moved the entire lmxproxy/ workspace, DCL
adapter files, and related docs to deprecated/. Removed LmxProxy registration
from DataConnectionFactory, project reference from DCL, protocol option from
UI, and cleaned up all requirement docs.
2026-04-08 15:56:23 -04:00

44 lines
1.6 KiB
C#

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