public void DiscoverReaders(StripeDiscoveryConfiguration config, Action <IList <StripeTerminalReader> > readers, Action scanTimeoutCallback)
        {
            // this assures the discovery succeeds on Android. Old code, ignores this, leading to lack of success in finding other types of readers except for Chipper2x
            var deviceType = DeviceType.Chipper2x;

            switch (config.DeviceType)
            {
            case "Chipper2X":
                deviceType = DeviceType.Chipper2x;
                break;

            case "VerifoneP400":
                deviceType = DeviceType.VerifoneP400;
                break;

            case "WisePad3":
                deviceType = DeviceType.Wisepad3;
                break;
            }


            var configuration = new DiscoveryConfiguration(config.TimeOut, deviceType, isSimulated: config.IsSimulated);


            _onReadersDiscoveredAction = readers;
            _discoveryCancelable?.Cancel(new GenericCallback((ex) =>
            {
                // Do Nothing...
            }));
            _discoveryCancelable = StripeTerminal.Instance.DiscoverReaders(configuration, this, new GenericCallback((ex) =>
            {
                // Do Nothing...
                scanTimeoutCallback();
            }));
        }
Пример #2
0
        public DiscoveryResultBase FilterIgnoredItems(
            DiscoveryResultBase discoveryResult)
        {
            DiscoveryResultBase    discoveryResult1 = this.FilterItems(discoveryResult, (Func <IDiscoveryPlugin, DiscoveryResultBase, DiscoveryPluginResultBase>)((plugin, result) => plugin.FilterOutItemsFromIgnoreList(result)));
            DiscoveryConfiguration config           = DiscoveryDatabase.GetDiscoveryConfiguration(((DiscoveryPluginResultBase)discoveryResult.GetPluginResultOfType <CoreDiscoveryPluginResult>()).get_ProfileId() ?? 0);

            if (config != null && config.get_IsAutoImport())
            {
                discoveryResult1 = this.FilterItems(discoveryResult1, (Func <IDiscoveryPlugin, DiscoveryResultBase, DiscoveryPluginResultBase>)((plugin, result) => !(plugin is ISupportAutoImport) ? (DiscoveryPluginResultBase)null : ((ISupportAutoImport)plugin).FilterAutoImportItems(result, (DiscoveryConfigurationBase)config)));
            }
            return(discoveryResult1);
        }
 // Token: 0x0600037B RID: 891 RVA: 0x0001619C File Offset: 0x0001439C
 private static TimeSpan GetDiscoveryJobTimeout(DiscoveryConfiguration configuration)
 {
     if (configuration.IsAgentJob)
     {
         return(BusinessLayerSettings.Instance.AgentDiscoveryJobTimeout);
     }
     if (configuration.JobTimeout == TimeSpan.Zero || configuration.JobTimeout == TimeSpan.MinValue)
     {
         return(TimeSpan.FromMinutes(60.0));
     }
     return(configuration.JobTimeout);
 }
        // Token: 0x0600061D RID: 1565 RVA: 0x00024BA8 File Offset: 0x00022DA8
        public DiscoveryResultBase FilterIgnoredItems(DiscoveryResultBase discoveryResult)
        {
            DiscoveryResultBase    discoveryResultBase = this.FilterItems(discoveryResult, (IDiscoveryPlugin plugin, DiscoveryResultBase result) => plugin.FilterOutItemsFromIgnoreList(result));
            DiscoveryConfiguration config = DiscoveryDatabase.GetDiscoveryConfiguration(discoveryResult.GetPluginResultOfType <CoreDiscoveryPluginResult>().ProfileId ?? 0);

            if (config != null && config.IsAutoImport)
            {
                discoveryResultBase = this.FilterItems(discoveryResultBase, delegate(IDiscoveryPlugin plugin, DiscoveryResultBase result)
                {
                    if (!(plugin is ISupportAutoImport))
                    {
                        return(null);
                    }
                    return(((ISupportAutoImport)plugin).FilterAutoImportItems(result, config));
                });
            }
            return(discoveryResultBase);
        }
Пример #5
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            //StripeConfiguration.SetApiKey("");
            //var options = new ConnectionTokenCreateOptions { };
            //var service = new ConnectionTokenService();
            //ConnectionToken connectionToken = service.Create(options);

            Terminal.InitTerminal(Android.App.Application.Context, Com.Stripe.Stripeterminal.LogLevel.Verbose, new ConnectionTokenProvider(), new TerminalListener());
            DiscoveryConfiguration config = new DiscoveryConfiguration(0, DeviceType.Chipper2x, true);

            Terminal.Instance.DiscoverReaders(config, new DiscoveryListener(), new Callback());
            Com.Stripe.Stripeterminal.Reader reader = DiscoveryListener.readers[0];

            Terminal.Instance.ConnectReader(reader, new ReaderCallback());

            var paymentIntentService = new PaymentIntentService();
            var paymentIntentOptions = new PaymentIntentCreateOptions
            {
                Amount             = 1000,
                Currency           = "usd",
                PaymentMethodTypes = new List <string> {
                    "card_present"
                },
                CaptureMethod = "manual",
            };

            Terminal.Instance.RetrievePaymentIntent(
                paymentIntentService.Create(paymentIntentOptions).ClientSecret,
                new PaymentIntentCallback());

            Cancelable cancelable = Terminal.Instance.CollectPaymentMethod(PaymentIntentCallback.paymentIntent,
                                                                           new ReaderListener(),
                                                                           new PaymentIntentCallback());

            Terminal.Instance.ProcessPayment(PaymentIntentCallback.paymentIntent,
                                             new PaymentIntentCallback());

            var intent = paymentIntentService.Capture(PaymentIntentCallback.paymentIntent.Id, new PaymentIntentCaptureOptions());
        }
 public ScheduledJob CreateDiscoveryJob(DiscoveryConfiguration configuration)
 {
     return(this.CreateDiscoveryJob(configuration, (IDiscoveryPluginFactory) new DiscoveryPluginFactory()));
 }
        public ScheduledJob CreateDiscoveryJob(
            DiscoveryConfiguration configuration,
            IDiscoveryPluginFactory pluginFactory)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            Engine engine = this.engineDAL.GetEngine(((DiscoveryConfigurationBase)configuration).get_EngineId());
            DiscoveryPollingEngineType?pollingEngineType = OrionDiscoveryJobFactory.GetDiscoveryPollingEngineType(configuration.get_EngineID(), this.engineDAL);
            int result;

            if (!int.TryParse(SettingsDAL.Get("SWNetPerfMon-Settings-SNMP MaxReps"), out result))
            {
                result = 5;
            }
            OrionDiscoveryJobDescription discoveryJobDescription1 = new OrionDiscoveryJobDescription();

            discoveryJobDescription1.set_ProfileId(((DiscoveryConfigurationBase)configuration).get_ProfileId());
            discoveryJobDescription1.set_EngineId(((DiscoveryConfigurationBase)configuration).get_EngineId());
            discoveryJobDescription1.set_HopCount(configuration.get_HopCount());
            discoveryJobDescription1.set_IcmpTimeout(configuration.get_SearchTimeout());
            DiscoveryCommonSnmpConfiguration snmpConfiguration = new DiscoveryCommonSnmpConfiguration();

            snmpConfiguration.set_MaxSnmpReplies(result);
            snmpConfiguration.set_SnmpRetries(configuration.get_SnmpRetries());
            snmpConfiguration.set_SnmpTimeout(configuration.get_SnmpTimeout());
            snmpConfiguration.set_SnmpPort(configuration.get_SnmpPort());
            snmpConfiguration.set_PreferredSnmpVersion(configuration.get_PreferredSnmpVersion());
            discoveryJobDescription1.set_SnmpConfiguration(snmpConfiguration);
            discoveryJobDescription1.set_DisableICMP(configuration.get_DisableICMP());
            discoveryJobDescription1.set_PreferredPollingMethod(((CoreDiscoveryPluginConfiguration)((DiscoveryConfigurationBase)configuration).GetDiscoveryPluginConfiguration <CoreDiscoveryPluginConfiguration>()).get_PreferredPollingMethod());
            discoveryJobDescription1.set_VulnerabilityCheckDisabled(SettingsDAL.GetCurrentInt("SWNetPerfMon-Settings-VulnerabilityCheckDisabled", 0) == 1);
            discoveryJobDescription1.set_MaxThreadsInDetectionPhase(SettingsDAL.GetCurrentInt("Discovery-MaxThreadsInDetectionPhase", 5));
            discoveryJobDescription1.set_MaxThreadsInInventoryPhase(SettingsDAL.GetCurrentInt("Discovery-MaxThreadsInInventoryPhase", 5));
            discoveryJobDescription1.set_PreferredDnsAddressFamily(SettingsDAL.GetCurrentInt("SWNetPerfMon-Settings-Default Preferred AddressFamily DHCP", 4));
            discoveryJobDescription1.set_TagFilter(configuration.get_TagFilter());
            discoveryJobDescription1.set_DefaultProbes(configuration.get_DefaultProbes());
            OrionDiscoveryJobDescription discoveryJobDescription2 = discoveryJobDescription1;
            List <DiscoveryPluginInfo>   discoveryPluginInfos     = DiscoveryPluginFactory.GetDiscoveryPluginInfos();
            IList <IDiscoveryPlugin>     plugins     = pluginFactory.GetPlugins((IList <DiscoveryPluginInfo>)discoveryPluginInfos);
            List <DiscoveryPluginInfo>   pluginInfos = new List <DiscoveryPluginInfo>();
            IDictionary <IDiscoveryPlugin, DiscoveryPluginInfo> pairsPluginAndInfo = DiscoveryPluginHelper.CreatePairsPluginAndInfo((IEnumerable <IDiscoveryPlugin>)plugins, (IEnumerable <DiscoveryPluginInfo>)discoveryPluginInfos);
            bool flag1 = RegistrySettings.IsFreePoller();

            using (IEnumerator <IDiscoveryPlugin> enumerator = ((IEnumerable <IDiscoveryPlugin>)plugins).GetEnumerator())
            {
                while (((IEnumerator)enumerator).MoveNext())
                {
                    IDiscoveryPlugin current = enumerator.Current;
                    if (flag1 && !(current is ISupportFreeEngine))
                    {
                        OrionDiscoveryJobFactory.log.DebugFormat("Discovery plugin {0} is not supported on FPE machine", (object)current);
                    }
                    else if (!((DiscoveryConfigurationBase)configuration).get_ProfileId().HasValue&& !(current is IOneTimeJobSupport))
                    {
                        OrionDiscoveryJobFactory.log.DebugFormat("Plugin {0} is not supporting one time job and it's description woun't be added.", (object)((object)current).GetType().FullName);
                    }
                    else
                    {
                        if (configuration.get_TagFilter() != null && configuration.get_TagFilter().Any <string>())
                        {
                            if (!(current is IDiscoveryPluginTags idiscoveryPluginTags))
                            {
                                OrionDiscoveryJobFactory.log.DebugFormat("Discovery job for tags requested, however plugin {0} doesn't support tags, skipping.", (object)current);
                                continue;
                            }
                            if (!configuration.get_TagFilter().Intersect <string>(idiscoveryPluginTags.get_Tags() ?? Enumerable.Empty <string>(), (IEqualityComparer <string>)StringComparer.InvariantCultureIgnoreCase).Any <string>())
                            {
                                OrionDiscoveryJobFactory.log.DebugFormat("Discovery job for tags [{0}], however plugin {1} doesn't support any of the tags requested, skipping.", (object)string.Join(",", (IEnumerable <string>)configuration.get_TagFilter()), (object)current);
                                continue;
                            }
                        }
                        if (configuration.get_IsAgentJob() && (!(current is IAgentPluginJobSupport pluginJobSupport) || !((IEnumerable <string>)configuration.get_AgentPlugins()).Contains <string>(pluginJobSupport.get_PluginId())))
                        {
                            OrionDiscoveryJobFactory.log.DebugFormat("Plugin {0} is not contained in supported agent plugins and will not be used.", (object)((object)current).GetType().FullName);
                        }
        // Token: 0x0600037A RID: 890 RVA: 0x00015B20 File Offset: 0x00013D20
        public ScheduledJob CreateDiscoveryJob(DiscoveryConfiguration configuration, IDiscoveryPluginFactory pluginFactory)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }
            Engine engine = this.engineDAL.GetEngine(configuration.EngineId);
            DiscoveryPollingEngineType?discoveryPollingEngineType = OrionDiscoveryJobFactory.GetDiscoveryPollingEngineType(configuration.EngineID, this.engineDAL);
            int maxSnmpReplies;

            if (!int.TryParse(SettingsDAL.Get("SWNetPerfMon-Settings-SNMP MaxReps"), out maxSnmpReplies))
            {
                maxSnmpReplies = 5;
            }
            OrionDiscoveryJobDescription orionDiscoveryJobDescription = new OrionDiscoveryJobDescription
            {
                ProfileId         = configuration.ProfileId,
                EngineId          = configuration.EngineId,
                HopCount          = configuration.HopCount,
                IcmpTimeout       = configuration.SearchTimeout,
                SnmpConfiguration = new DiscoveryCommonSnmpConfiguration
                {
                    MaxSnmpReplies       = maxSnmpReplies,
                    SnmpRetries          = configuration.SnmpRetries,
                    SnmpTimeout          = configuration.SnmpTimeout,
                    SnmpPort             = configuration.SnmpPort,
                    PreferredSnmpVersion = configuration.PreferredSnmpVersion
                },
                DisableICMP                = configuration.DisableICMP,
                PreferredPollingMethod     = configuration.GetDiscoveryPluginConfiguration <CoreDiscoveryPluginConfiguration>().PreferredPollingMethod,
                VulnerabilityCheckDisabled = (SettingsDAL.GetCurrentInt("SWNetPerfMon-Settings-VulnerabilityCheckDisabled", 0) == 1),
                MaxThreadsInDetectionPhase = SettingsDAL.GetCurrentInt("Discovery-MaxThreadsInDetectionPhase", 5),
                MaxThreadsInInventoryPhase = SettingsDAL.GetCurrentInt("Discovery-MaxThreadsInInventoryPhase", 5),
                PreferredDnsAddressFamily  = SettingsDAL.GetCurrentInt("SWNetPerfMon-Settings-Default Preferred AddressFamily DHCP", 4),
                TagFilter     = configuration.TagFilter,
                DefaultProbes = configuration.DefaultProbes
            };
            List <DiscoveryPluginInfo> discoveryPluginInfos = DiscoveryPluginFactory.GetDiscoveryPluginInfos();
            IList <IDiscoveryPlugin>   plugins = pluginFactory.GetPlugins(discoveryPluginInfos);
            List <DiscoveryPluginInfo> list    = new List <DiscoveryPluginInfo>();
            IDictionary <IDiscoveryPlugin, DiscoveryPluginInfo> dictionary = DiscoveryPluginHelper.CreatePairsPluginAndInfo(plugins, discoveryPluginInfos);
            bool flag = RegistrySettings.IsFreePoller();

            foreach (IDiscoveryPlugin discoveryPlugin in plugins)
            {
                if (flag && !(discoveryPlugin is ISupportFreeEngine))
                {
                    OrionDiscoveryJobFactory.log.DebugFormat("Discovery plugin {0} is not supported on FPE machine", discoveryPlugin);
                }
                else if (configuration.ProfileId == null && !(discoveryPlugin is IOneTimeJobSupport))
                {
                    OrionDiscoveryJobFactory.log.DebugFormat("Plugin {0} is not supporting one time job and it's description woun't be added.", discoveryPlugin.GetType().FullName);
                }
                else
                {
                    if (configuration.TagFilter != null && configuration.TagFilter.Any <string>())
                    {
                        IDiscoveryPluginTags discoveryPluginTags = discoveryPlugin as IDiscoveryPluginTags;
                        if (discoveryPluginTags == null)
                        {
                            OrionDiscoveryJobFactory.log.DebugFormat("Discovery job for tags requested, however plugin {0} doesn't support tags, skipping.", discoveryPlugin);
                            continue;
                        }
                        if (!configuration.TagFilter.Intersect(discoveryPluginTags.Tags ?? Enumerable.Empty <string>(), StringComparer.InvariantCultureIgnoreCase).Any <string>())
                        {
                            OrionDiscoveryJobFactory.log.DebugFormat("Discovery job for tags [{0}], however plugin {1} doesn't support any of the tags requested, skipping.", string.Join(",", configuration.TagFilter), discoveryPlugin);
                            continue;
                        }
                    }
                    if (configuration.IsAgentJob)
                    {
                        IAgentPluginJobSupport agentPluginJobSupport = discoveryPlugin as IAgentPluginJobSupport;
                        if (agentPluginJobSupport == null || !configuration.AgentPlugins.Contains(agentPluginJobSupport.PluginId))
                        {
                            OrionDiscoveryJobFactory.log.DebugFormat("Plugin {0} is not contained in supported agent plugins and will not be used.", discoveryPlugin.GetType().FullName);
                            continue;
                        }
                    }
                    if (discoveryPollingEngineType != null && !OrionDiscoveryJobFactory.IsDiscoveryPluginSupportedForDiscoveryPollingEngineType(discoveryPlugin, discoveryPollingEngineType.Value, dictionary))
                    {
                        if (OrionDiscoveryJobFactory.log.IsDebugEnabled)
                        {
                            OrionDiscoveryJobFactory.log.DebugFormat(string.Format("Plugin {0} is not supported for polling engine {1}", discoveryPlugin.GetType().FullName, configuration.EngineID), Array.Empty <object>());
                        }
                    }
                    else
                    {
                        DiscoveryPluginJobDescriptionBase discoveryPluginJobDescriptionBase = null;
                        Exception ex = null;
                        try
                        {
                            discoveryPluginJobDescriptionBase = discoveryPlugin.GetJobDescription(configuration);
                        }
                        catch (Exception ex2)
                        {
                            discoveryPluginJobDescriptionBase = null;
                            ex = ex2;
                        }
                        if (discoveryPluginJobDescriptionBase == null)
                        {
                            string text = "Plugin " + discoveryPlugin.GetType().FullName + " was not able found valid job description.";
                            if (ex != null)
                            {
                                OrionDiscoveryJobFactory.log.Warn(text, ex);
                            }
                            else
                            {
                                OrionDiscoveryJobFactory.log.Warn(text);
                            }
                        }
                        else
                        {
                            orionDiscoveryJobDescription.DiscoveryPluginJobDescriptions.Add(discoveryPluginJobDescriptionBase);
                            DiscoveryPluginInfo item = dictionary[discoveryPlugin];
                            list.Add(item);
                        }
                    }
                }
            }
            JobDescription jobDescription = new JobDescription
            {
                TypeName = typeof(OrionDiscoveryJob).AssemblyQualifiedName,
                JobDetailConfiguration = this.GetOrionDiscoveryJobDescriptionString(orionDiscoveryJobDescription, list, configuration.UseJsonFormat),
                JobNamespace           = "orion",
                ResultTTL       = TimeSpan.FromMinutes(10.0),
                TargetNode      = new HostAddress(IPAddressHelper.ToStringIp(engine.IP), 4),
                LegacyEngine    = engine.ServerName.ToLowerInvariant(),
                EndpointAddress = (configuration.IsAgentJob ? configuration.AgentAddress : null),
                SupportedRoles  = 7
            };

            jobDescription.Timeout = OrionDiscoveryJobFactory.GetDiscoveryJobTimeout(configuration);
            ScheduledJob scheduledJob;

            if (configuration.CronSchedule != null)
            {
                bool   flag2 = false;
                string text2 = configuration.CronSchedule.CronExpression;
                if (string.IsNullOrWhiteSpace(text2))
                {
                    DateTime t = configuration.CronSchedule.StartTime.ToLocalTime();
                    if (t < DateTime.Now)
                    {
                        OrionDiscoveryJobFactory.log.InfoFormat("Profile (ID={0}) with past Once(Cron) schedule. We should not create job for it.", configuration.ProfileID);
                        return(null);
                    }
                    text2 = string.Format("{0} {1} {2} {3} *", new object[]
                    {
                        t.Minute,
                        t.Hour,
                        t.Day,
                        t.Month
                    });
                    flag2 = true;
                }
                scheduledJob              = new ScheduledJob(jobDescription, text2, "net.pipe://localhost/orion/core/scheduleddiscoveryjobsevents2", configuration.ProfileID.ToString());
                scheduledJob.RunOnce      = flag2;
                scheduledJob.TimeZoneInfo = TimeZoneInfo.Local;
                if (!flag2)
                {
                    scheduledJob.Start = configuration.CronSchedule.StartTime.ToUniversalTime();
                    DateTime?endTime  = configuration.CronSchedule.EndTime;
                    DateTime maxValue = DateTime.MaxValue;
                    if ((endTime == null || (endTime != null && endTime.GetValueOrDefault() != maxValue)) && configuration.CronSchedule.EndTime != null)
                    {
                        scheduledJob.End = configuration.CronSchedule.EndTime.Value.ToUniversalTime();
                    }
                }
            }
            else if (!configuration.ScheduleRunAtTime.Equals(DateTime.MinValue))
            {
                scheduledJob = new ScheduledJob(jobDescription, configuration.ScheduleRunAtTime, "net.pipe://localhost/orion/core/scheduleddiscoveryjobsevents2", configuration.ProfileID.ToString());
            }
            else
            {
                scheduledJob = new ScheduledJob(jobDescription, configuration.ScheduleRunFrequency, "net.pipe://localhost/orion/core/scheduleddiscoveryjobsevents2", configuration.ProfileID.ToString());
            }
            return(scheduledJob);
        }
        // Token: 0x060002AE RID: 686 RVA: 0x00010840 File Offset: 0x0000EA40
        private static void StartImportInternal(Guid importId, DiscoveryResultBase result, SortedDictionary <int, List <IDiscoveryPlugin> > importingPlugins, bool checkLicenseLimits, DiscoveryImportManager.CallbackDiscoveryImportFinished callbackAfterImport)
        {
            string                  webjs_PS0_ = Resources.WEBJS_PS0_17;
            StartImportStatus       status     = StartImportStatus.Failed;
            List <DiscoveryLogItem> list       = new List <DiscoveryLogItem>();

            try
            {
                DiscoveryConfiguration discoveryConfiguration = DiscoveryDatabase.GetDiscoveryConfiguration(result.ProfileID);
                if (discoveryConfiguration != null)
                {
                    string name = discoveryConfiguration.Name;
                }
            }
            catch (Exception ex)
            {
                DiscoveryImportManager.log.Warn("Unable to load profile name", ex);
            }
            using (LocaleThreadState.EnsurePrimaryLocale())
            {
                try
                {
                    DiscoveryNetObjectStatusManager.Instance.BeginOrionDatabaseChanges();
                    if (checkLicenseLimits)
                    {
                        if (DiscoveryImportManager.GetLicensedStatus(result).Any((ElementLicenseInfo n) => n.ExceededBy != 0))
                        {
                            DiscoveryImportManager.log.Debug("Can't import discovery result, because license was exceeded");
                            status = StartImportStatus.LicenseExceeded;
                            return;
                        }
                    }
                    double progress = 0.0;
                    double num      = (double)(100 / importingPlugins.Keys.Count);
                    foreach (int key in importingPlugins.Keys)
                    {
                        using (List <IDiscoveryPlugin> .Enumerator enumerator2 = importingPlugins[key].GetEnumerator())
                        {
                            while (enumerator2.MoveNext())
                            {
                                IDiscoveryPlugin  plugin           = enumerator2.Current;
                                ISupportImportLog supportImportLog = plugin as ISupportImportLog;
                                if (supportImportLog != null)
                                {
                                    supportImportLog.SetImportLogCallback(new Action <DiscoveryLogItem>(list.Add));
                                }
                                plugin.ImportResults(result, delegate(string message, double phaseProgress)
                                {
                                    DiscoveryImportManager.UpdateProgress(importId, message, progress + phaseProgress / (double)importingPlugins.Keys.Count, phaseProgress, plugin.GetImportPhaseName(), false);
                                });
                            }
                        }
                        progress += num;
                    }
                    DiscoveryImportManager.UpdateProgress(importId, Resources.LIBCODE_VB0_28, 100.0, 100.0, string.Empty, true);
                    status = StartImportStatus.Finished;
                }
                catch (Exception ex2)
                {
                    status = StartImportStatus.Failed;
                    DiscoveryImportManager.log.Error("Exception occurred during discovery import", ex2);
                    DiscoveryImportManager.UpdateProgress(importId, Resources.LIBCODE_TM0_30, 100.0, 100.0, string.Empty, true);
                }
                finally
                {
                    DiscoveryNetObjectStatusManager.Instance.EndOrionDatabaseChanges();
                    result.BatchID = Guid.NewGuid();
                    try
                    {
                        DiscoveryImportManager.InsertDiscoveryLogItems(list, result.BatchID);
                    }
                    catch (Exception ex3)
                    {
                        DiscoveryImportManager.log.Error("Unable to store discovery import items", ex3);
                    }
                    if (callbackAfterImport != null)
                    {
                        try
                        {
                            callbackAfterImport(result, importId, status);
                        }
                        catch (Exception ex4)
                        {
                            DiscoveryImportManager.log.Error("Error while calling callback after import.", ex4);
                        }
                    }
                    DiscoveryNetObjectStatusManager.Instance.RequestUpdateAsync(null, BusinessLayerSettings.Instance.DiscoveryUpdateNetObjectStatusWaitForChangesDelay);
                }
            }
        }