/// <summary> /// Initializes a new EffectiveHttpClient with a client build strategy /// </summary> /// <param name="buildStrategy">client build strategy</param> /// <param name="renewStrategy">client renew strategy</param> public EffectiveHttpClient(HttpClientBuildStrategy buildStrategy, IRenewStrategy renewStrategy) : base( buildStrategy.BaseAddress.ToString().ToLowerInvariant(), buildStrategy, renewStrategy) { }
/// <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; }