public static IServiceCollection AddServerApplication <TTransport>(this IServiceCollection services, EndPoint serverEndPoint, Action <IConnectionBuilder> serverApplication, params object[] args) where TTransport : IConnectionListenerFactory { services.AddOptions <ServerApplicationOptions>() .Configure <IServiceProvider>((options, serviceProvider) => { var serverBuilder = new ConnectionBuilder(serviceProvider); serverApplication(serverBuilder); var binding = new ServerBinding { ServerApplication = serverBuilder.Build(), EndPoint = serverEndPoint, ConnectionListenerFactory = ActivatorUtilities.CreateInstance <TTransport>(serviceProvider, args) }; options.Bindings.Add(binding); }); services.AddHostedService <ServerApplication>(); return(services); }
public RunningListener(Server server, ServerBinding binding, IConnectionListener listener) { _server = server; _binding = binding; Listener = listener; }