using RemoteExec.Client.LoadBalancingStrategies;
namespace RemoteExec.Client;
///
/// Configuration options for the remote executor client.
///
public class RemoteExecutorOptions
{
///
/// Gets or sets the load balancing strategy used to select servers for task execution.
/// Default is .
///
public ILoadBalancingStrategy Strategy { get; set; } = new ResourceAwareStrategy();
///
/// Gets or sets the API key used for authenticating with remote servers.
///
public string ApiKey { get; set; } = string.Empty;
///
/// Gets or sets the maximum time to wait for a task result before throwing a TimeoutException.
/// Default is 5 minutes.
///
public TimeSpan ExecutionTimeout { get; set; } = TimeSpan.FromMinutes(5);
///
/// Gets or sets the initial delay before attempting to reconnect to a disconnected server.
/// Default is 5 seconds.
///
public TimeSpan ServerReconnectInitialDelay { get; set; } = TimeSpan.FromSeconds(5);
///
/// Gets or sets the maximum delay between server reconnection attempts.
/// Default is 60 seconds.
///
public TimeSpan ServerReconnectMaxDelay { get; set; } = TimeSpan.FromSeconds(60);
///
/// Gets or sets the maximum number of times a failed task can be requeued before failing permanently.
/// Default is 3.
///
public int MaxTaskRetries { get; set; } = 3;
///
/// Gets or sets the maximum number of tasks that can be queued globally before blocking new execute calls.
/// Default is 1000.
///
public int GlobalQueueCapacity { get; set; } = 1000;
}