/* ======================================================================== * Copyright (c) 2005-2025 The OPC Foundation, Inc. All rights reserved. * * OPC Foundation MIT License 1.00 * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * The complete license agreement can be found here: * http://opcfoundation.org/License/MIT/1.00/ * ======================================================================*/ using System; namespace Opc.Ua.Client.Historian { /// /// Snapshot of Server.ServerCapabilities.HistoryServerCapabilities /// returned by . /// public sealed record HistoryServerCapabilitiesInfo { /// /// Whether the server supports raw/modified history reads. /// public bool AccessHistoryData { get; init; } /// /// Whether the server supports event-history reads. /// public bool AccessHistoryEvents { get; init; } /// /// Maximum data values returned per request (0 = no limit). /// public uint MaxReturnDataValues { get; init; } /// /// Maximum events returned per request (0 = no limit). /// public uint MaxReturnEventValues { get; init; } /// /// Whether the server supports inserting raw values. /// public bool InsertData { get; init; } /// /// Whether the server supports replacing raw values. /// public bool ReplaceData { get; init; } /// /// Whether the server supports upserting raw values. /// public bool UpdateData { get; init; } /// /// Whether the server supports range delete. /// public bool DeleteRaw { get; init; } /// /// Whether the server supports point delete. /// public bool DeleteAtTime { get; init; } /// /// Whether the server supports inserting annotations. /// public bool InsertAnnotation { get; init; } /// /// Whether the server persists ServerTimestamp on history. /// public bool ServerTimestampSupported { get; init; } } /// /// Snapshot of HistoricalDataConfigurationType for a single /// historizing variable, returned by /// . /// /// /// /// Servers running this stack do not yet auto-install the /// companion object under historizing variables, so this snapshot /// is filled best-effort: properties that resolve return their /// values, properties that the server has not surfaced come back /// as null. indicates whether /// any property was populated. /// /// public sealed record HistoricalDataConfigurationInfo { /// true when at least one property was resolved. public bool HasConfiguration { get; init; } /// /// Whether the signal is stepped (per Part 11 ยง5.2.3). /// public bool? Stepped { get; init; } /// /// Free-form description of the historized signal. /// public string? Definition { get; init; } /// /// Maximum time between samples (milliseconds). /// public double? MaxTimeInterval { get; init; } /// /// Minimum time between samples (milliseconds). /// public double? MinTimeInterval { get; init; } /// /// Exception deviation value used by the historizer. /// public double? ExceptionDeviation { get; init; } /// /// Start of the archive window (oldest available). /// public DateTime? StartOfArchive { get; init; } /// /// Start of the online archive window. /// public DateTime? StartOfOnlineArchive { get; init; } } }