using Microsoft.Extensions.DependencyInjection;
using StellaOps.Router.Common.Abstractions;
namespace StellaOps.Router.Transport.Udp;
///
/// Extension methods for registering UDP transport services.
///
public static class ServiceCollectionExtensions
{
///
/// Adds UDP transport server services to the service collection.
///
/// The service collection.
/// Optional configuration action.
/// The service collection.
public static IServiceCollection AddUdpTransportServer(
this IServiceCollection services,
Action? configure = null)
{
if (configure is not null)
{
services.Configure(configure);
}
services.AddSingleton();
services.AddSingleton(sp => sp.GetRequiredService());
return services;
}
///
/// Adds UDP transport client services to the service collection.
///
/// The service collection.
/// Optional configuration action.
/// The service collection.
public static IServiceCollection AddUdpTransportClient(
this IServiceCollection services,
Action? configure = null)
{
if (configure is not null)
{
services.Configure(configure);
}
services.AddSingleton();
services.AddSingleton(sp => sp.GetRequiredService());
services.AddSingleton(sp => sp.GetRequiredService());
return services;
}
}