Ejemplo n.º 1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddSingleton <IRunningStateService, RunningStateService>();
            services.AddSingleton <IWatcherRepository, CosmosWatcherRepository>();
            services.AddSingleton <IAgentController, AgentController>();
            services.AddSingleton <JobHost>();

            services.AddSingleton <IRecordContainer <AgentRecord> >(services =>
            {
                IWatcherRepository watcherRepository = services.GetRequiredService <IWatcherRepository>();
                return(watcherRepository.Container.Get <AgentRecord>());
            });

            services.AddSingleton <IRecordContainer <TargetRecord> >(services =>
            {
                IWatcherRepository watcherRepository = services.GetRequiredService <IWatcherRepository>();
                return(watcherRepository.Container.Get <TargetRecord>());
            });

            services.AddSingleton <IRecordContainer <TraceRecord> >(services =>
            {
                IWatcherRepository watcherRepository = services.GetRequiredService <IWatcherRepository>();
                return(watcherRepository.Container.Get <TraceRecord>());
            });

            services.AddHostedService <JobHost>();
            services.AddHttpClient();
        }
Ejemplo n.º 2
0
        private ServiceProvider CreateContainer(IOption option)
        {
            var container = new ServiceCollection();

            container.AddHttpClient();

            container.AddLogging(config =>
            {
                config
                .AddConsole()
                .AddDebug();

                if (!option.LogFolder.IsEmpty())
                {
                    config.AddFileLogger(option.LogFolder !, "WatcherCmd");
                }
            });

            container.AddSingleton(option);
            container.AddSingleton <IJson, Json>();
            container.AddSingleton <TemplateActivity>();

            if (option.Store != null)
            {
                container.AddSingleton <ICosmosWatcherOption>(option.Store);
                container.AddSingleton <IWatcherRepository, CosmosWatcherRepository>();
                container.AddSingleton <IAgentController, AgentController>();

                container.AddSingleton <IRecordContainer <AgentRecord> >(services =>
                {
                    IWatcherRepository watcherRepository = services.GetRequiredService <IWatcherRepository>();
                    return(watcherRepository.Container.Get <AgentRecord>());
                });

                container.AddSingleton <IRecordContainer <TargetRecord> >(services =>
                {
                    IWatcherRepository watcherRepository = services.GetRequiredService <IWatcherRepository>();
                    return(watcherRepository.Container.Get <TargetRecord>());
                });
                container.AddSingleton <IRecordContainer <TraceRecord> >(services =>
                {
                    IWatcherRepository watcherRepository = services.GetRequiredService <IWatcherRepository>();
                    return(watcherRepository.Container.Get <TraceRecord>());
                });

                container.AddSingleton <AgentActivity>();
                container.AddSingleton <TargetActivity>();
                container.AddSingleton <BalanceActivity>();
                container.AddSingleton <ImportActivity>();
                container.AddSingleton <MonitorActivity>();
            }

            return(container.BuildServiceProvider());
        }
Ejemplo n.º 3
0
        private async Task InitializeRepository(IOption option, IServiceProvider container, CancellationToken token)
        {
            if (option.Store == null)
            {
                return;
            }

            Console.WriteLine("Initializing Cosmos Database");

            IWatcherRepository watcherRepository = container.GetRequiredService <IWatcherRepository>();
            await watcherRepository.InitializeContainers(token);
        }
Ejemplo n.º 4
0
        public AgentController(ICosmosWatcherOption option, IWatcherRepository watcherRepository, ILogger <AgentController> logger)
        {
            option.VerifyNotNull(nameof(option));
            watcherRepository.VerifyNotNull(nameof(watcherRepository));
            logger.VerifyNotNull(nameof(logger));

            _option            = option;
            _watcherRepository = watcherRepository;
            _logger            = logger;

            _agentContainer  = _watcherRepository.Container.Get <AgentRecord>();
            _targetContainer = _watcherRepository.Container.Get <TargetRecord>();
        }
Ejemplo n.º 5
0
 public UnitOfWork(IWatcherRepository watcherRepository)
 {
     _watcherRepository = new Lazy <IWatcherRepository>(() => watcherRepository);
 }
Ejemplo n.º 6
0
 public WatchBuilder(IWatcherRepository watcher)
 {
     _watcherRepo = watcher;
 }