Skip to content

Commit

Permalink
feat: Add AddLavalinkLoadBalancingStrategy helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
angelobreuer committed Sep 29, 2023
1 parent f552b37 commit 4bb7c2d
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/Lavalink4NET.Cluster/Extensions/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,34 @@ public static IServiceCollection ConfigureLavalinkCluster(this IServiceCollectio
{
return services.Configure(options);
}

public static IServiceCollection AddLavalinkLoadBalancingStrategy<TLoadBalancingStrategy>(this IServiceCollection services)
where TLoadBalancingStrategy : class, INodeBalancingStrategy
{
ArgumentNullException.ThrowIfNull(services);

services.Replace(ServiceDescriptor.Singleton<INodeBalancingStrategy, TLoadBalancingStrategy>());

return services;
}

public static IServiceCollection AddLavalinkLoadBalancingStrategy<TLoadBalancingStrategy>(this IServiceCollection services, Func<IServiceProvider, TLoadBalancingStrategy> func)
where TLoadBalancingStrategy : class, INodeBalancingStrategy
{
ArgumentNullException.ThrowIfNull(services);

services.Replace(ServiceDescriptor.Singleton<INodeBalancingStrategy, TLoadBalancingStrategy>(func));

return services;
}

public static IServiceCollection AddLavalinkLoadBalancingStrategy<TLoadBalancingStrategy>(this IServiceCollection services, TLoadBalancingStrategy loadBalancingStrategy)
where TLoadBalancingStrategy : class, INodeBalancingStrategy
{
ArgumentNullException.ThrowIfNull(services);

services.Replace(ServiceDescriptor.Singleton<INodeBalancingStrategy>(loadBalancingStrategy));

return services;
}
}

0 comments on commit 4bb7c2d

Please sign in to comment.