docs(xmldoc): fill missing XML docs + strip tracking-ID comments across src
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Adds <summary>/<param>/<returns>/<inheritdoc> where missing and removes project bookkeeping IDs (task/tracking refs) from shipped code comments, so the docs read cleanly and CommentChecker is quiet except for known false positives (PLC/protocol terms, event/IEqualityComparer inheritdoc). Doc/comment-only; no logic changed; solution builds clean.
This commit is contained in:
+5
@@ -7,6 +7,11 @@ namespace ZB.MOM.WW.OtOpcUa.AdminUI.Components.Shared.Drivers.Pickers;
|
||||
/// </summary>
|
||||
public static class AbLegacyAddressBuilder
|
||||
{
|
||||
/// <summary>Builds the canonical AB Legacy address string from its file-type, file-number, and element parts.</summary>
|
||||
/// <param name="fileType">The file-type prefix (e.g. <c>N</c>).</param>
|
||||
/// <param name="fileNumber">The file number.</param>
|
||||
/// <param name="element">The element index within the file.</param>
|
||||
/// <returns>The canonical address string (e.g. <c>N7:0</c>).</returns>
|
||||
public static string Build(string fileType, int fileNumber, int element)
|
||||
=> $"{fileType}{fileNumber}:{element}";
|
||||
}
|
||||
|
||||
+4
@@ -7,6 +7,10 @@ namespace ZB.MOM.WW.OtOpcUa.AdminUI.Components.Shared.Drivers.Pickers;
|
||||
/// </summary>
|
||||
public static class FocasAddressBuilder
|
||||
{
|
||||
/// <summary>Builds the canonical FOCAS address string from a parameter group and parameter ID.</summary>
|
||||
/// <param name="group">The FOCAS parameter group (e.g. <c>"axis"</c>).</param>
|
||||
/// <param name="parameterId">The parameter ID within the group.</param>
|
||||
/// <returns>The canonical address string in <c>group:parameterId</c> form (e.g. <c>axis:5</c>).</returns>
|
||||
public static string Build(string group, int parameterId)
|
||||
=> $"{group}:{parameterId}";
|
||||
}
|
||||
|
||||
+5
@@ -7,6 +7,11 @@ namespace ZB.MOM.WW.OtOpcUa.AdminUI.Components.Shared.Drivers.Pickers;
|
||||
/// </summary>
|
||||
public static class ModbusAddressBuilder
|
||||
{
|
||||
/// <summary>Builds the canonical Modbus address string for a register type, offset, and length.</summary>
|
||||
/// <param name="regType">The register type (e.g. Coil, DiscreteInput, Input, Holding).</param>
|
||||
/// <param name="offset">The zero-based register/coil offset.</param>
|
||||
/// <param name="length">The number of registers/coils spanned.</param>
|
||||
/// <returns>The canonical address string (e.g. <c>4x00001-1</c>).</returns>
|
||||
public static string Build(string regType, int offset, int length)
|
||||
{
|
||||
var prefix = regType switch
|
||||
|
||||
+2
@@ -7,10 +7,12 @@ namespace ZB.MOM.WW.OtOpcUa.AdminUI.Components.Shared.Drivers.Pickers;
|
||||
/// </summary>
|
||||
public static class S7AddressBuilder
|
||||
{
|
||||
/// <summary>Builds the canonical S7 address string for the given area, DB number, offset, and data type.</summary>
|
||||
/// <param name="area">DB / M / I / Q</param>
|
||||
/// <param name="dbNumber">Only relevant when area == "DB".</param>
|
||||
/// <param name="offset">Byte offset (decimal).</param>
|
||||
/// <param name="s7Type">X / B / W / D / REAL</param>
|
||||
/// <returns>The canonical S7 address string (e.g. <c>DB10.DBD20:REAL</c>).</returns>
|
||||
public static string Build(string area, int dbNumber, int offset, string s7Type)
|
||||
{
|
||||
if (area == "DB")
|
||||
|
||||
@@ -14,19 +14,28 @@ public sealed class ResilienceFormModel
|
||||
public static readonly string[] Capabilities =
|
||||
["Read", "Write", "Discover", "Subscribe", "Probe", "AlarmSubscribe", "AlarmAcknowledge", "HistoryRead"];
|
||||
|
||||
/// <summary>Gets or sets the bulkhead max-concurrency override; null = use the tier default.</summary>
|
||||
public int? BulkheadMaxConcurrent { get; set; }
|
||||
/// <summary>Gets or sets the bulkhead max-queue-length override; null = use the tier default.</summary>
|
||||
public int? BulkheadMaxQueue { get; set; }
|
||||
/// <summary>Gets or sets the driver recycle-interval override, in seconds; null = use the tier default.</summary>
|
||||
public int? RecycleIntervalSeconds { get; set; }
|
||||
|
||||
// capability name -> (timeout, retry, breaker), each nullable.
|
||||
/// <summary>Gets or sets the per-capability resilience overrides, keyed by capability name.</summary>
|
||||
public Dictionary<string, CapabilityRow> Policies { get; set; } =
|
||||
Capabilities.ToDictionary(c => c, _ => new CapabilityRow(), StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
/// <summary>Per-capability timeout/retry/breaker override row; null fields fall back to the tier default.</summary>
|
||||
public sealed class CapabilityRow
|
||||
{
|
||||
/// <summary>Gets or sets the timeout override, in seconds; null = use the tier default.</summary>
|
||||
public int? TimeoutSeconds { get; set; }
|
||||
/// <summary>Gets or sets the retry-count override; null = use the tier default.</summary>
|
||||
public int? RetryCount { get; set; }
|
||||
/// <summary>Gets or sets the circuit-breaker failure-threshold override; null = use the tier default.</summary>
|
||||
public int? BreakerFailureThreshold { get; set; }
|
||||
/// <summary>Gets a value indicating whether all fields in this row are unset.</summary>
|
||||
public bool IsEmpty => TimeoutSeconds is null && RetryCount is null && BreakerFailureThreshold is null;
|
||||
}
|
||||
|
||||
@@ -37,6 +46,9 @@ public sealed class ResilienceFormModel
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
};
|
||||
|
||||
/// <summary>Parses the override JSON into a form model; malformed or blank JSON yields an empty (all-default) form.</summary>
|
||||
/// <param name="json">The raw resilience-override JSON, or null/blank if there is no override.</param>
|
||||
/// <returns>A populated form model, or an all-default one when <paramref name="json"/> is blank or malformed.</returns>
|
||||
public static ResilienceFormModel FromJson(string? json)
|
||||
{
|
||||
var model = new ResilienceFormModel();
|
||||
@@ -62,6 +74,7 @@ public sealed class ResilienceFormModel
|
||||
}
|
||||
|
||||
/// <summary>Emit only the non-null overrides; returns null when nothing is overridden.</summary>
|
||||
/// <returns>The serialized override JSON, or null when no field in this form is overridden.</returns>
|
||||
public string? ToJson()
|
||||
{
|
||||
var caps = Policies
|
||||
@@ -87,18 +100,27 @@ public sealed class ResilienceFormModel
|
||||
return JsonSerializer.Serialize(shape, WriteOpts);
|
||||
}
|
||||
|
||||
/// <summary>Wire shape of the resilience-override JSON, as consumed by DriverResilienceOptionsParser.</summary>
|
||||
private sealed class Shape
|
||||
{
|
||||
/// <summary>Gets or sets the bulkhead max-concurrency override.</summary>
|
||||
public int? BulkheadMaxConcurrent { get; set; }
|
||||
/// <summary>Gets or sets the bulkhead max-queue-length override.</summary>
|
||||
public int? BulkheadMaxQueue { get; set; }
|
||||
/// <summary>Gets or sets the driver recycle-interval override, in seconds.</summary>
|
||||
public int? RecycleIntervalSeconds { get; set; }
|
||||
/// <summary>Gets or sets the per-capability overrides, keyed by capability name.</summary>
|
||||
public Dictionary<string, PolicyShape>? CapabilityPolicies { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>Wire shape of a single capability's timeout/retry/breaker override.</summary>
|
||||
private sealed class PolicyShape
|
||||
{
|
||||
/// <summary>Gets or sets the timeout override, in seconds.</summary>
|
||||
public int? TimeoutSeconds { get; set; }
|
||||
/// <summary>Gets or sets the retry-count override.</summary>
|
||||
public int? RetryCount { get; set; }
|
||||
/// <summary>Gets or sets the circuit-breaker failure-threshold override.</summary>
|
||||
public int? BreakerFailureThreshold { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user