Пример #1
0
 /// <summary>
 /// Initializes a new <see cref="DeployService"/>.
 /// </summary>
 /// <param name="syncService">Service used for synchronizing package versions.</param>
 /// <param name="fusionService">Service used for fusing packages.</param>
 /// <param name="scheduleService">Service used for orchestrating fusion packages.</param>
 /// <param name="announcementFactory">Factory that creates <see cref="IDeployAnnouncement"/> instances.</param>
 /// <param name="packageVersionValidator">The validator that is used to validate announced package version(s).</param>
 public DeployService(
     ISyncService syncService,
     IFusionService fusionService,
     IScheduleService scheduleService,
     IDeployAnnouncementFactory announcementFactory,
     IPackageVersionValidator packageVersionValidator)
 {
     this.syncService             = syncService;
     this.fusionService           = fusionService;
     this.scheduleService         = scheduleService;
     this.announcementFactory     = announcementFactory;
     this.packageVersionValidator = packageVersionValidator;
 }
Пример #2
0
        /// <summary>
        /// Initializes a new <see cref="FusionService"/>.
        /// </summary>
        /// <param name="logService">Service used for logging.</param>
        /// <param name="configStore">Store used for loading configuration.</param>
        /// <param name="syncService">Service used for synchronization of package versions.</param>
        /// <param name="fusionFactory">Factory used for creating <see cref="IFusion"/> instances.</param>
        /// <param name="fusionExtractor">Extractor used for extracting streams of fusions.</param>
        /// <param name="fusionBuilder">Builder used to build a <see cref="IFusion"/> before it's extracted.</param>
        /// <param name="announcementFactory">Factory used for creating instances of <see cref="IDeployAnnouncement"/>.</param>
        /// <param name="packageVersionValidator">Validator used for validating <see cref="PackageVersion"/> availability.</param>
        public FusionService(
            ILog logService,
            IConfigStore configStore,
            ISyncService syncService,
            IFusionFactory fusionFactory,
            IFusionExtracter fusionExtractor,
            IFusionBuilder fusionBuilder,
            IDeployAnnouncementFactory announcementFactory,
            IPackageVersionValidator packageVersionValidator)
        {
            this.logService = logService;

            this.configStore = configStore;
            this.syncService = syncService;

            this.fusionFactory   = fusionFactory;
            this.fusionExtractor = fusionExtractor;
            this.fusionBuilder   = fusionBuilder;

            this.announcementFactory     = announcementFactory;
            this.packageVersionValidator = packageVersionValidator;
        }
Пример #3
0
        /// <summary>
        /// Initializes a new <see cref="ScheduleService"/>.
        /// </summary>
        /// <param name="logService">Service used for logging.</param>
        /// <param name="configStore">Store used for loading configuration.</param>
        /// <param name="fusionService">Service used for resolving fusion extractions.</param>
        /// <param name="fusionProcessFactory">Factory used for creating <see cref="IFusionProcess"/> instances.</param>
        /// <param name="announcementFactory">Factory that creates <see cref="IDeployAnnouncement"/> instances.</param>
        /// <param name="drainers">Collection of drainers that needs to determine if a <see cref="IFusionProcess"/> is ready for teardown.</param>
        /// <param name="interceptors">Collection of interceptors thats needs to be fired on certain events.</param>
        public ScheduleService(
            ILog logService,
            IConfigStore configStore,
            IFusionService fusionService,
            IFusionProcessFactory fusionProcessFactory,
            IDeployAnnouncementFactory announcementFactory,
            IEnumerable <IFusionProcessDrainer> drainers,
            IEnumerable <IFusionProcessInterceptor> interceptors)
        {
            this.logService    = logService;
            this.configStore   = configStore;
            this.fusionService = fusionService;

            this.fusionProcessFactory = fusionProcessFactory;
            this.announcementFactory  = announcementFactory;

            this.drainers     = drainers.StaleReadOnly();
            this.interceptors = interceptors.StaleReadOnly();

            syncLock = new SemaphoreSlim(nrOfSimultaneousOperations);

            processes = new SortedDictionary <string, IFusionProcess>(
                StringComparer.OrdinalIgnoreCase);
        }