using CliFx.Attributes; using CliFx.Infrastructure; using ZB.MOM.WW.OtOpcUa.Client.Shared; namespace ZB.MOM.WW.OtOpcUa.Client.CLI.Commands; [Command("connect", Description = "Test connection to an OPC UA server")] public class ConnectCommand : CommandBase { /// /// Creates the connectivity test command used to verify endpoint reachability and negotiated security settings. /// /// The factory that creates the shared client service for the command run. public ConnectCommand(IOpcUaClientServiceFactory factory) : base(factory) { } /// public override async ValueTask ExecuteAsync(IConsole console) { ConfigureLogging(); IOpcUaClientService? service = null; try { (service, var info) = await CreateServiceAndConnectAsync(console.RegisterCancellationHandler()); await console.Output.WriteLineAsync($"Connected to: {info.EndpointUrl}"); await console.Output.WriteLineAsync($"Server: {info.ServerName}"); await console.Output.WriteLineAsync($"Security Mode: {info.SecurityMode}"); await console.Output.WriteLineAsync($"Security Policy: {info.SecurityPolicyUri}"); await console.Output.WriteLineAsync("Connection successful."); } finally { if (service != null) { await service.DisconnectAsync(); service.Dispose(); } } } }