Exemple #1
0
        /// <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;
                            }
                        }
                    }
        }
Exemple #2
0
 /// <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);
 }
Exemple #5
0
 /// <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,
     });
 }
Exemple #6
0
 /// <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);
 }
Exemple #7
0
 /// <inheritdoc/>
 public Task ConfigureAsync(DiscoveryMode mode, DiscoveryConfigModel config)
 {
     _request = new DiscoveryRequest(mode, config);
     return(Task.CompletedTask);
 }