using Microsoft.Extensions.DependencyInjection; using StellaOps.Router.Common.Abstractions; namespace StellaOps.Router.Transport.Tcp; /// /// Extension methods for registering TCP transport services. /// public static class ServiceCollectionExtensions { /// /// Adds TCP transport server services to the service collection. /// /// The service collection. /// Optional configuration action. /// The service collection. public static IServiceCollection AddTcpTransportServer( this IServiceCollection services, Action? configure = null) { if (configure is not null) { services.Configure(configure); } services.AddSingleton(); services.AddSingleton(sp => sp.GetRequiredService()); return services; } /// /// Adds TCP transport client services to the service collection. /// /// The service collection. /// Optional configuration action. /// The service collection. public static IServiceCollection AddTcpTransportClient( 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; } }