CredentialServiceWithCache
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Relativity.Transfer
{
internal class CredentialServiceWithCache : ICredentialService
{
private readonly ICredentialService credentialService;
private readonly ICacheProvider cacheProvider;
private readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
public RelativityConnectionInfo ConnectionInfo => credentialService.ConnectionInfo;
public int MaxRetryAttempts {
get {
return credentialService.MaxRetryAttempts;
}
set {
credentialService.MaxRetryAttempts = value;
}
}
public double TimeoutSeconds {
get {
return credentialService.TimeoutSeconds;
}
set {
credentialService.TimeoutSeconds = value;
}
}
public CredentialServiceWithCache(ICredentialService credentialService, ICacheProvider cacheProvider)
{
this.credentialService = credentialService;
this.cacheProvider = cacheProvider;
}
public Task<IEnumerable<Credential>> GetCredentialsAsync(CancellationToken token)
{
return GetCredentialsAsync(null, token);
}
[AsyncStateMachine(typeof(<GetCredentialsAsync>d__13))]
public Task<IEnumerable<Credential>> GetCredentialsAsync(string condition, CancellationToken token)
{
<GetCredentialsAsync>d__13 stateMachine = default(<GetCredentialsAsync>d__13);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<IEnumerable<Credential>>.Create();
stateMachine.<>4__this = this;
stateMachine.condition = condition;
stateMachine.token = token;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<GetResourceServerAsperaCredentialAsync>d__14))]
public Task<AsperaCredential> GetResourceServerAsperaCredentialAsync(int resourceServerArtifactId, CancellationToken token)
{
<GetResourceServerAsperaCredentialAsync>d__14 stateMachine = default(<GetResourceServerAsperaCredentialAsync>d__14);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<AsperaCredential>.Create();
stateMachine.<>4__this = this;
stateMachine.resourceServerArtifactId = resourceServerArtifactId;
stateMachine.token = token;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<SynchronizeAsync>d__15<>))]
private Task<T> SynchronizeAsync<T>(Func<Task<T>> func)
{
<SynchronizeAsync>d__15<T> stateMachine = default(<SynchronizeAsync>d__15<T>);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<T>.Create();
stateMachine.<>4__this = this;
stateMachine.func = func;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
}
}