<PackageReference Include="Relativity.Transfer.Client" Version="7.1.40" />

InstanceSettingsWithFallbackRetriever

using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Relativity.Transfer { internal class InstanceSettingsWithFallbackRetriever : IInstanceSettingRetriever { private readonly IList<IInstanceSettingRetriever> retrievers; private readonly ITransferLog log; public InstanceSettingsWithFallbackRetriever(ITransferLog transferLog) { log = transferLog; retrievers = new List<IInstanceSettingRetriever>(); } public void Register(IInstanceSettingRetriever retriever) { retrievers.Add(retriever); } public async Task<IEnumerable<InstanceSetting>> GetAllAsync(CancellationToken token) { foreach (IInstanceSettingRetriever retriever in retrievers) { try { IEnumerable<InstanceSetting> instanceSettings = await retriever.GetAllAsync(token).ConfigureAwait(false); if (instanceSettings != null) return instanceSettings; } catch (Exception e) { log.LogWarning(e, "There was and error during fetching of the instance settings.", Array.Empty<object>()); } } return null; } public async Task<InstanceSetting> GetSingleAsync(string section, string name, CancellationToken token) { foreach (IInstanceSettingRetriever retriever in retrievers) { try { InstanceSetting instanceSetting = await retriever.GetSingleAsync(section, name, token).ConfigureAwait(false); if (instanceSetting != null) return instanceSetting; } catch (Exception e) { log.LogWarning(e, "There was and error during fetching of the instance setting: " + section + " " + name + ".", Array.Empty<object>()); } } return null; } } }