private static void ConfigureServices(IServiceCollection services, ReassemblerCliOptions opts) { services.AddLogging(); services.AddSingleton <IClusterSettings, ClusterSettings>( provider => new ClusterSettings { ClusterNodeHostname = opts.ClusterNodeHostname, ClusterNodePort = opts.ClusterNodePort, ClusterSeedNodeHostname = opts.ClusterSeedNodeHostname }); services.AddSingleton <IHostedService, ReassemblerService>(); ActorsServiceInstaller.Install(services); FacadesServiceInstaller.Install(services); if (opts.DevnullRepository) { DevNullServiceInstaller.Install(services); } else if (opts.CassandraRepository) { CassandraServiceInstaller.Install(services, opts.CassandraKeyspace, opts.CassandraContactPoint); } else { InMemoryServiceInstaller.Install(services); } if (opts.OutPcapDirectory != null) { services.AddSingleton <IPcapFacadeConfiguration>(new PcapFacadeConfiguration { BaseDirectory = opts.OutPcapDirectory }); services.AddSingleton <IPcapFacade, PcapFacade>(); } else { services.AddSingleton <IPcapFacade, PcapDevnullFacade>(); } }
private static void ConfigureServices(LoadBalancerCliOptions opts) { IServiceCollection services = new ServiceCollection(); services.AddLogging(); services.AddSingleton(services); services.AddSingleton(provider => provider); services.AddSingleton <IPcapLoader, PcapLoader.PcapLoader>(); services.AddSingleton <LoadBalancerRunner>(); services.AddSingleton <IAkkaSettings>(new AkkaSettings { IsDebug = opts.IsDebug }); if (opts.Uri.Scheme == "rpcap") { services.AddSingleton <ICaptureDeviceFactory, CaptureLiveDeviceFactory>(); } else { services.AddSingleton <ICaptureDeviceFactory, CaptureDeviceFactory>(); } services.AddSingleton <ILoadBalancerRunner, LoadBalancerRunner>(); services.AddSingleton <ILoadBalancerRunnerFactory, LoadBalancerRunnerFactory>(); services.AddSingleton <IBatchLoader, BatchLoader>(); services.AddSingleton <IBatchSender, BatchSender>(); ActorsServiceInstaller.Install(services); FacadesServiceInstaller.Install(services); if (opts.Offline) { services.AddSingleton <IPacketIngestor, OfflineLoadBalancer>(); services.AddSingleton <IOfflineLoadBalancerActorFactory, OfflineLoadBalancerActorFactory>(); } else { services.AddSingleton <IPacketIngestor, OnlineLoadBalancer>(); services.AddSingleton <IClusterSettings, ClusterSettings>( provider => new ClusterSettings { ClusterNodeHostname = opts.ClusterNodeHostname, ClusterNodePort = opts.ClusterNodePort, ClusterSeedNodeHostname = opts.ClusterSeedNodeHostname }); services.AddSingleton <IClusterMember, OnlineLoadBalancer>(); services.AddSingleton <IOnlineLoadBalancerActorFactory, OnlineLoadBalancerActorFactory>(); } if (opts.DevnullRepository) { DevNullServiceInstaller.Install(services); } else if (opts.CassandraRepository) { CassandraServiceInstaller.Install(services, opts.CassandraKeyspace, opts.CassandraContactPoint); } // Not specified or InMemoryRepository selected else { InMemoryServiceInstaller.Install(services); } if (opts.OutPcapDirectory != null) { services.AddSingleton <IPcapFacadeConfiguration>(new PcapFacadeConfiguration { BaseDirectory = opts.OutPcapDirectory }); services.AddSingleton <IPcapFacade, PcapFacade>(); } else { services.AddSingleton <IPcapFacade, PcapDevnullFacade>(); } services.AddLogging(builder => builder.AddConsole()); var serviceProvider = services.BuildServiceProvider(); _loadBalancerRunnerFactory = serviceProvider.GetService <ILoadBalancerRunnerFactory>(); }