RestServiceBase
using Relativity.Transfer.InstanceSettings;
using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Relativity.Transfer
{
public abstract class RestServiceBase
{
private readonly IInstanceSettingsConfigurationService instanceSettingsConfigurationService;
public RelativityConnectionInfo ConnectionInfo { get; }
public int MaxRetryAttempts { get; set; }
public double TimeoutSeconds { get; set; }
internal IRelativityServiceFactory ServiceFactory { get; }
protected IFileSystemService FileSystemService { get; }
protected ITransferLog Log { get; }
protected RestServiceBase(RelativityConnectionInfo connectionInfo)
: this(connectionInfo, new NullTransferLog())
{
}
protected RestServiceBase(RelativityConnectionInfo connectionInfo, ITransferLog log)
: this(connectionInfo, log, 5, 300)
{
}
protected RestServiceBase(RelativityConnectionInfo connectionInfo, ITransferLog log, int maxRetryAttempts, double timeoutSeconds)
: this(connectionInfo, new ClientConfiguration {
MaxHttpRetryAttempts = maxRetryAttempts,
HttpTimeoutSeconds = timeoutSeconds
}, log)
{
}
protected RestServiceBase(RelativityConnectionInfo connectionInfo, ClientConfiguration configuration, ITransferLog log)
{
if (connectionInfo == null)
throw new ArgumentNullException("connectionInfo");
ConnectionInfo = connectionInfo;
if (log == null)
throw new ArgumentNullException("log");
Log = log;
if (configuration == null)
throw new ArgumentNullException("configuration");
FileSystemService = ServiceObjectLocator.GetService<IFileSystemService>();
MaxRetryAttempts = ((configuration.MaxHttpRetryAttempts > 0) ? configuration.MaxHttpRetryAttempts : 5);
TimeoutSeconds = ((configuration.HttpTimeoutSeconds > 0) ? configuration.HttpTimeoutSeconds : 300);
instanceSettingsConfigurationService = ((ServiceFactory)(ServiceFactory = new ServiceFactory(connectionInfo, configuration, Log))).CreateInstanceSettingsConfigurationService();
}
[AsyncStateMachine(typeof(<GetIsRelativityOneInstanceAsync>d__25))]
protected Task<bool> GetIsRelativityOneInstanceAsync(CancellationToken token)
{
<GetIsRelativityOneInstanceAsync>d__25 stateMachine = default(<GetIsRelativityOneInstanceAsync>d__25);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<bool>.Create();
stateMachine.<>4__this = this;
stateMachine.token = token;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
}
}