Пример #1
0
        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>();
            }
        }
Пример #2
0
        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>();
        }