/// <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; }
public CICDPipeline(IBuildStrategy buildStrategy) { this.strategy = buildStrategy; }
public T Build <T>(IBuildStrategy <T> strategy) where T : class { return(strategy.Build()); }
public FleetBuilder(IBuildStrategy strategy) => BuildStrategy = strategy;