Esempio n. 1
0
        /// <summary>
        /// Get a leasable based off the given key, or create a new leasable
        /// </summary>
        /// <param name="key">the key to reuse</param>
        /// <param name="buildStrategy">build strategy to initialize a new leasable</param>
        /// <returns>An auto renew leasable</returns>
        public AutoRenewLeasable <TData> GetLeasable(
            TKey key,
            IBuildStrategy <TData> buildStrategy,
            IRenewStrategy renewStrategy)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (buildStrategy == null)
            {
                throw new ArgumentNullException(nameof(buildStrategy));
            }

            if (renewStrategy == null)
            {
                throw new ArgumentNullException(nameof(renewStrategy));
            }

            // Thread safe GetOrAdd
            var leasable = this.leasables.GetOrAdd(key, x => new AutoRenewLeasable <TData>(buildStrategy, renewStrategy));

            return(leasable);
        }
        /// <summary>
        /// Initializing a new lease with the given data object
        /// </summary>
        /// <param name="buildStrategy">build strategy</param>
        /// <param name="renewStrategy">build strategy</param>
        public AutoRenewLeasable(IBuildStrategy <T> buildStrategy, IRenewStrategy renewStrategy)
        {
            if (buildStrategy == null)
            {
                throw new ArgumentNullException(nameof(buildStrategy));
            }

            if (renewStrategy == null)
            {
                throw new ArgumentNullException(nameof(renewStrategy));
            }

            this.buildStrategy = buildStrategy;
            this.renewStrategy = renewStrategy;
        }
Esempio n. 3
0
 public CICDPipeline(IBuildStrategy buildStrategy)
 {
     this.strategy = buildStrategy;
 }
Esempio n. 4
0
 public T Build <T>(IBuildStrategy <T> strategy) where T : class
 {
     return(strategy.Build());
 }
Esempio n. 5
0
 public FleetBuilder(IBuildStrategy strategy) => BuildStrategy = strategy;