diff --git a/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/RepositoryHandler.cs b/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/RepositoryHandler.cs index c2ae5f54a6e2..057f62a3533c 100644 --- a/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/RepositoryHandler.cs +++ b/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/RepositoryHandler.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Azure.Core; using Azure.Core.Pipeline; using Azure.Iot.ModelsRepository.Fetchers; using System; @@ -16,19 +17,22 @@ internal class RepositoryHandler private readonly IModelFetcher _modelFetcher; private readonly Guid _clientId; private readonly ClientDiagnostics _clientDiagnostics; + private readonly Uri _repositoryUri; + private readonly ResolverClientOptions _clientOptions; - public Uri RepositoryUri { get; } - public ResolverClientOptions ClientOptions { get; } - - public RepositoryHandler(Uri repositoryUri, ClientDiagnostics clientdiagnostics, ResolverClientOptions options = null) + public RepositoryHandler(Uri repositoryUri, ClientDiagnostics clientDiagnostics, ResolverClientOptions options) { - ClientOptions = options ?? new ResolverClientOptions(); - RepositoryUri = repositoryUri; - _clientDiagnostics = clientdiagnostics; + Argument.AssertNotNull(options, nameof(options)); + + _clientOptions = options; + _clientDiagnostics = clientDiagnostics; _modelFetcher = repositoryUri.Scheme == "file" - ? _modelFetcher = new LocalModelFetcher(_clientDiagnostics, ClientOptions) - : _modelFetcher = new RemoteModelFetcher(_clientDiagnostics, ClientOptions); + ? _modelFetcher = new LocalModelFetcher(_clientDiagnostics, _clientOptions) + : _modelFetcher = new RemoteModelFetcher(_clientDiagnostics, _clientOptions); _clientId = Guid.NewGuid(); + + _repositoryUri = repositoryUri; + ResolverEventSource.Instance.InitFetcher(_clientId, repositoryUri.Scheme); } @@ -91,7 +95,7 @@ private async Task> ProcessAsync(IEnumerable ModelMetadata metadata = new ModelQuery(result.Definition).GetMetadata(); - if (ClientOptions.DependencyResolution >= DependencyResolutionOption.Enabled) + if (_clientOptions.DependencyResolution >= DependencyResolutionOption.Enabled) { IList dependencies = metadata.Dependencies; @@ -124,7 +128,7 @@ private async Task FetchAsync(string dtmi, CancellationToken cancel { try { - return await _modelFetcher.FetchAsync(dtmi, RepositoryUri, cancellationToken).ConfigureAwait(false); + return await _modelFetcher.FetchAsync(dtmi, _repositoryUri, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { @@ -136,7 +140,7 @@ private FetchResult Fetch(string dtmi, CancellationToken cancellationToken) { try { - return _modelFetcher.Fetch(dtmi, RepositoryUri, cancellationToken); + return _modelFetcher.Fetch(dtmi, _repositoryUri, cancellationToken); } catch (Exception ex) { diff --git a/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/ResolverClient.cs b/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/ResolverClient.cs index be07f7c056fa..9d318977c070 100644 --- a/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/ResolverClient.cs +++ b/sdk/modelsrepository/Azure.Iot.ModelsRepository/src/ResolverClient.cs @@ -19,6 +19,8 @@ public class ResolverClient { private readonly RepositoryHandler _repositoryHandler; private readonly ClientDiagnostics _clientDiagnostics; + private readonly ResolverClientOptions _clientOptions; + private readonly Uri _repositoryUri; /// /// Initializes the ResolverClient with default client options while pointing to @@ -80,8 +82,10 @@ public ResolverClient(Uri repositoryUri, ResolverClientOptions options) { Argument.AssertNotNull(options, nameof(options)); + _clientOptions = options; _clientDiagnostics = new ClientDiagnostics(options); - _repositoryHandler = new RepositoryHandler(repositoryUri, _clientDiagnostics, options); + _repositoryUri = repositoryUri; + _repositoryHandler = new RepositoryHandler(_repositoryUri, _clientDiagnostics, _clientOptions); } /// @@ -205,12 +209,12 @@ public virtual IDictionary Resolve(IEnumerable dtmis, Ca /// /// Gets the Uri associated with the ResolverClient instance. /// - public Uri RepositoryUri => _repositoryHandler.RepositoryUri; + public Uri RepositoryUri => _repositoryUri; /// /// Gets the ResolverClientOptions associated with the ResolverClient instance. /// - public ResolverClientOptions ClientOptions => _repositoryHandler.ClientOptions; + public ResolverClientOptions ClientOptions => _clientOptions; /// /// Azure Device Models Repository used by default.