a25593a9c6
Group all 69 projects into category subfolders under src/ and tests/ so the Rider Solution Explorer mirrors the module structure. Folders: Core, Server, Drivers (with a nested Driver CLIs subfolder), Client, Tooling. - Move every project folder on disk with git mv (history preserved as renames). - Recompute relative paths in 57 .csproj files: cross-category ProjectReferences, the lib/ HintPath+None refs in Driver.Historian.Wonderware, and the external mxaccessgw refs in Driver.Galaxy and its test project. - Rebuild ZB.MOM.WW.OtOpcUa.slnx with nested solution folders. - Re-prefix project paths in functional scripts (e2e, compliance, smoke SQL, integration, install). Build green (0 errors); unit tests pass. Docs left for a separate pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
1.6 KiB
C#
30 lines
1.6 KiB
C#
namespace ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
|
|
|
/// <summary>
|
|
/// Optional driver capability — drivers whose backend has a native change signal
|
|
/// (Galaxy <c>time_of_last_deploy</c>, OPC UA server change notifications, TwinCAT
|
|
/// symbol-version-changed) implement this to tell Core when to re-run discovery.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Per <c>docs/v2/plan.md</c> decision #54 — static drivers (Modbus, S7, etc. whose tags
|
|
/// only change via a published config generation) don't implement <c>IRediscoverable</c>.
|
|
/// The Core just sees absence of the interface and skips change-detection wiring for that driver.
|
|
/// </remarks>
|
|
public interface IRediscoverable
|
|
{
|
|
/// <summary>
|
|
/// Fired when the driver's backend signals that the address space may have changed.
|
|
/// The Core's response is to re-run <see cref="ITagDiscovery.DiscoverAsync"/> and
|
|
/// diff the result against the current address space.
|
|
/// </summary>
|
|
event EventHandler<RediscoveryEventArgs>? OnRediscoveryNeeded;
|
|
}
|
|
|
|
/// <summary>Event payload for <see cref="IRediscoverable.OnRediscoveryNeeded"/>.</summary>
|
|
/// <param name="Reason">Driver-supplied reason string for the diagnostic log (e.g. "Galaxy time_of_last_deploy advanced", "TwinCAT symbol-version-changed 0x0702").</param>
|
|
/// <param name="ScopeHint">
|
|
/// Optional hint about which subtree changed. Null means "the whole address space may have changed".
|
|
/// A non-null value (e.g. a folder path) lets the Core scope the rebuild surgically.
|
|
/// </param>
|
|
public sealed record RediscoveryEventArgs(string Reason, string? ScopeHint);
|