feat: HistorianGateway as the OtOpcUa historian backend (read/write/alarms + continuous historization); retire Wonderware #423

Merged
dohertj2 merged 40 commits from feat/historian-gateway-backend into master 2026-06-27 11:09:04 -04:00
3 changed files with 12 additions and 1 deletions
Showing only changes of commit c51ca2276b - Show all commits
@@ -35,6 +35,16 @@ public interface IHistorianGatewayClient : IAsyncDisposable
CancellationToken ct); CancellationToken ct);
/// <summary>Streams historian events over a window, optionally filtered to a single source name.</summary> /// <summary>Streams historian events over a window, optionally filtered to a single source name.</summary>
/// <param name="sourceName">Optional source-name filter; <c>null</c> returns events from all sources.</param>
/// <param name="startUtc">Inclusive start of the time window (UTC).</param>
/// <param name="endUtc">Exclusive end of the time window (UTC).</param>
/// <param name="maxEvents">
/// Caps the number of events returned. The gateway wire contract (<c>ReadEventsRequest</c>) has
/// no per-call server cap, so this limit is enforced client-side by early stream termination:
/// <c>0</c> or negative means no client-side limit (the gateway may still apply its configured
/// <c>RuntimeDb:EventReadMaxRows</c>); a positive value stops draining after that many events.
/// </param>
/// <param name="ct">Cancellation token.</param>
IAsyncEnumerable<HistorianEvent> ReadEventsAsync( IAsyncEnumerable<HistorianEvent> ReadEventsAsync(
string? sourceName, string? sourceName,
DateTime startUtc, DateTime startUtc,
@@ -4,6 +4,7 @@
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile> <GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);CS1591</NoWarn> <NoWarn>$(NoWarn);CS1591</NoWarn>
<Platforms>AnyCPU;x64</Platforms>
<RootNamespace>ZB.MOM.WW.OtOpcUa.Driver.Historian.Gateway</RootNamespace> <RootNamespace>ZB.MOM.WW.OtOpcUa.Driver.Historian.Gateway</RootNamespace>
</PropertyGroup> </PropertyGroup>
@@ -209,6 +209,6 @@ public sealed class FakeHistorianGatewayClient : IHistorianGatewayClient
yield return item; yield return item;
} }
await Task.CompletedTask.ConfigureAwait(false); await ValueTask.CompletedTask.ConfigureAwait(false);
} }
} }