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);
        }
示例#2
0
 public RunningListener(Server server, ServerBinding binding, IConnectionListener listener)
 {
     _server  = server;
     _binding = binding;
     Listener = listener;
 }