ProcessorWorkerService.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Quadarax.Application.QLiberace.Base.Services;
  2. using Quadarax.Application.QLiberace.Processor.Repositories;
  3. using Quadarax.Application.QLiberace.Processor.Settings;
  4. using Quadarax.Application.QLiberace.Processor.Workers;
  5. using Quadarax.Foundation.Core.Business;
  6. using Quadarax.Foundation.Core.Data.Interface.Domain;
  7. using Quadarax.Foundation.Core.Logging;
  8. namespace Quadarax.Application.QLiberace.Processor.Services
  9. {
  10. public class ProcessorWorkerService : AbstractWorkerService<RepoPendingQueue, RepoProcessingQueue, RepoDoneQueue, RepoFailedQueue>
  11. {
  12. #region *** Properties ***
  13. #endregion
  14. #region *** Private fields ***
  15. private SettingsService _srvSettings;
  16. #endregion
  17. #region *** Constructor ***
  18. public ProcessorWorkerService(SettingsService srvSettings, RepoFailedQueue repository3, RepoDoneQueue repository2, RepoProcessingQueue repository1, RepoPendingQueue repository, IContext currentContext, IQLogger logger) : base(repository3, repository2, repository1, repository, currentContext, logger)
  19. {
  20. _srvSettings = srvSettings ?? throw new ArgumentNullException(nameof(srvSettings));
  21. }
  22. #endregion
  23. #region *** Public operations ***
  24. #endregion
  25. #region *** Private operations ***
  26. protected override void OnBuildWorkers()
  27. {
  28. var exists = _srvSettings.ExistsSettings(Base.Constants.Modules.Processor.Code);
  29. if (!exists.IsSuccess)
  30. throw exists.ToAggregateException();
  31. if (!exists.Value)
  32. {
  33. var newSettings = new ProcessorSetting();
  34. newSettings.SetDefaults();
  35. Log.Log(LogSeverityEnum.Warn, $"Settings for module '{Base.Constants.Modules.Processor.Code}' was set to default!");
  36. _srvSettings.CreateSettings<ProcessorSetting>(newSettings);
  37. }
  38. var settings = _srvSettings.GetSettings<ProcessorSetting>(Base.Constants.Modules.Processor.Code);
  39. if (!settings.IsSuccess)
  40. throw settings.ToAggregateException();
  41. RegisterWorker<ProcessingWorker>(settings.Value.GetProcessingWorkerSettings());
  42. // TODO: Uncomment when ready
  43. //RegisterWorker<RetentionWorker>(settings.Value.GetRetentionWorkerSettings());
  44. //RegisterWorker<GarbageWorker>(settings.Value.GetGarbageWorkerSettings());
  45. }
  46. #endregion
  47. }
  48. }