private IEnumerable <Type> GetAllJobTypes(IModulesHandler modulesHandler) { var jobType = typeof(IJob); return(modulesHandler.LoadedModuleAssemblies .Union(new List <Assembly> { typeof(CommonSettings).Assembly }) .SelectMany(a => a.GetTypes()) .Where(t => t.IsAssignableTo(jobType) && !t.IsAbstract)); }
private async void StartAllJobs(IServiceProvider serviceProvider, IModulesHandler modulesHandler) { try { await modulesHandler.LoadModulesTaskSource.Task; // Delay to make sure everythings loaded await Task.Delay(5000); var jobTypes = GetAllJobTypes(modulesHandler); var jobs = CreateJobs(serviceProvider, jobTypes); foreach (var job in jobs) { job.Start(); } } catch (Exception ex) { ConsoleHelper.Log(LogSeverity.Error, LogSource.Core, "Loading all jobs failed.", ex); } }
public ContentService(IModulesHandler modulesHandler, IGuildsHandler guildsHandler) => (_modulesHandler, _guildsHandler) = (modulesHandler, guildsHandler);
public GuildModuleCommands(IModulesHandler modulesHandler) => _modulesHandler = modulesHandler;
public JobsHandler(IServiceProvider serviceProvider, IModulesHandler modulesHandler) { StartAllJobs(serviceProvider, modulesHandler); }
public SettingsService(IGuildsHandler guildsHandler, IModulesHandler modulesHandler, ISettingsHandler settingsHandler) => (_guildsHandler, _modulesHandler, _settingsHandler) = (guildsHandler, modulesHandler, settingsHandler);