/// <summary> /// Test discovery /// </summary> private static async Task TestOpcUaDiscoveryServiceAsync(string addressRanges, bool stress) { using (var logger = StackLogger.Create(ConsoleLogger.Create())) using (var client = new ClientServices(logger.Logger, new TestClientServicesConfig())) using (var scanner = new DiscoveryServices(client, new ConsoleEmitter(), logger.Logger)) { var rand = new Random(); while (true) { var configuration = new DiscoveryConfigModel { IdleTimeBetweenScans = TimeSpan.FromMilliseconds(1), AddressRangesToScan = addressRanges }; await scanner.ConfigureAsync(DiscoveryMode.Scan, configuration); await scanner.ScanAsync(); await Task.Delay(!stress?TimeSpan.FromMinutes(10) : TimeSpan.FromMilliseconds(rand.Next(0, 120000))); logger.Logger.Information("Stopping discovery!"); await scanner.ConfigureAsync(DiscoveryMode.Off, null); await scanner.ScanAsync(); if (!stress) { break; } } } }
/// <summary> /// Create request wrapper /// </summary> /// <param name="mode"></param> /// <param name="configuration"></param> public DiscoveryRequest(DiscoveryMode?mode, DiscoveryConfigModel configuration) : this(new DiscoveryRequestModel { Configuration = configuration, Discovery = mode }, NetworkClass.Wired) { }
/// <summary> /// Create request wrapper /// </summary> /// <param name="mode"></param> /// <param name="configuration"></param> public DiscoveryRequest(DiscoveryMode?mode, DiscoveryConfigModel configuration) : this(new DiscoveryRequestModel { Id = "", Configuration = configuration, Context = null, Discovery = mode }, NetworkClass.Wired, true) { }
/// <summary> /// Create from service model /// </summary> /// <param name="model"></param> public DiscoveryConfigApiModel(DiscoveryConfigModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } AddressRangesToScan = model.AddressRangesToScan; NetworkProbeTimeout = model.NetworkProbeTimeout; MaxNetworkProbes = model.MaxNetworkProbes; PortRangesToScan = model.PortRangesToScan; PortProbeTimeout = PortProbeTimeout; MaxPortProbes = model.MaxPortProbes; MinPortProbesPercent = model.MinPortProbesPercent; IdleTimeBetweenScans = IdleTimeBetweenScans; DiscoveryUrls = model.DiscoveryUrls; Locales = model.Locales; ActivationFilter = model.ActivationFilter == null ? null : new EndpointActivationFilterApiModel(model.ActivationFilter); }
/// <summary> /// Create from service model /// </summary> /// <param name="model"></param> public static DiscoveryConfigApiModel ToApiModel( this DiscoveryConfigModel model) { if (model == null) { return(null); } return(new DiscoveryConfigApiModel { AddressRangesToScan = model.AddressRangesToScan, NetworkProbeTimeout = model.NetworkProbeTimeout, MaxNetworkProbes = model.MaxNetworkProbes, PortRangesToScan = model.PortRangesToScan, PortProbeTimeout = model.PortProbeTimeout, MaxPortProbes = model.MaxPortProbes, MinPortProbesPercent = model.MinPortProbesPercent, IdleTimeBetweenScans = model.IdleTimeBetweenScans, ActivationFilter = model.ActivationFilter.ToApiModel(), Locales = model.Locales, DiscoveryUrls = model.DiscoveryUrls, }); }
/// <summary> /// Create from service model /// </summary> /// <param name="model"></param> public DiscoveryConfigApiModel(DiscoveryConfigModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } AddressRangesToScan = model.AddressRangesToScan; NetworkProbeTimeoutMs = (int?)model.NetworkProbeTimeout?.TotalMilliseconds; MaxNetworkProbes = model.MaxNetworkProbes; PortRangesToScan = model.PortRangesToScan; PortProbeTimeoutMs = (int?)model.PortProbeTimeout?.TotalMilliseconds; MaxPortProbes = model.MaxPortProbes; MinPortProbesPercent = model.MinPortProbesPercent; IdleTimeBetweenScansSec = (int?)model.IdleTimeBetweenScans?.TotalSeconds; Callbacks = model.Callbacks? .Select(c => c == null ? null : new CallbackApiModel(c)) .ToList(); DiscoveryUrls = model.DiscoveryUrls; Locales = model.Locales; ActivationFilter = model.ActivationFilter == null ? null : new EndpointActivationFilterApiModel(model.ActivationFilter); }
/// <inheritdoc/> public Task ConfigureAsync(DiscoveryMode mode, DiscoveryConfigModel config) { _request = new DiscoveryRequest(mode, config); return(Task.CompletedTask); }