コード例 #1
0
        public TaskExecutor(ITaskAllocator taskAllocator, ITaskHandlerLocator handlerLocator, ITaskMetadataManager metadataManager, IServiceProvider serviceProvider, ILogger <TaskExecutor> logger)
        {
            this.taskAllocator   = taskAllocator ?? throw new ArgumentNullException(nameof(taskAllocator));
            this.serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            this.logger          = logger ?? throw new ArgumentNullException(nameof(logger));

            foreach (var taskType in handlerLocator.TaskTypes)
            {
                var taskMetadata = metadataManager.FindTaskMetadata(taskType);
                if (taskMetadata == null)
                {
                    throw new InvalidOperationException();
                }

                handlerFactories.Add(taskType, new TaskHandlerMetadata(taskMetadata.TaskName, HandlerBaseType.MakeGenericType(taskType)));
            }
        }
コード例 #2
0
        public ITaskRepositoryTests()
        {
            host = new HostBuilder()
                   .ConfigureServices((hostContext, services) =>
            {
                services
                .AddWorkerAllocator(options =>
                {
                    options.TimeoutWaitingTasksPerExecutor = TimeSpan.FromSeconds(2);
                })
                .AddTaskRepository <MemoryTaskRepository>()
                .AddTaskType(typeof(TestTask));

                services.AddSingleton <TaskAllocator>();
            })
                   .Build();

            metadataManager = host.Services.GetRequiredService <ITaskMetadataManager>();
            allocator       = host.Services.GetRequiredService <ITaskAllocator>();
            taskRepository  = (MemoryTaskRepository)host.Services.GetRequiredService <ITaskRepository>();
        }
コード例 #3
0
 public TaskAllocatorHostService(ITaskAllocator taskAllocator)
 {
     this.taskAllocator = taskAllocator ?? throw new ArgumentNullException(nameof(taskAllocator));
 }