/// <nodoc /> public static GrpcFileCopierConfiguration FromDistributedContentSettings(DistributedContentSettings dcs, int grpcPort) { var grpcCopyClientCacheConfiguration = GrpcCopyClientCacheConfiguration.FromDistributedContentSettings(dcs); var grpcFileCopierConfiguration = new GrpcFileCopierConfiguration() { GrpcPort = (int)grpcPort, GrpcCopyClientCacheConfiguration = grpcCopyClientCacheConfiguration, JunctionsByDirectory = dcs.AlternateDriveMap }; ApplyIfNotNull( dcs.GrpcFileCopierGrpcCopyClientInvalidationPolicy, v => { if (!Enum.TryParse <GrpcFileCopierConfiguration.ClientInvalidationPolicy>(v, out var parsed)) { throw new ArgumentException( $"Failed to parse `{nameof(dcs.GrpcFileCopierGrpcCopyClientInvalidationPolicy)}` setting with value `{dcs.GrpcFileCopierGrpcCopyClientInvalidationPolicy}` into type `{nameof(GrpcFileCopierConfiguration.ClientInvalidationPolicy)}`"); } grpcFileCopierConfiguration.GrpcCopyClientInvalidationPolicy = parsed; }); grpcFileCopierConfiguration.UseUniversalLocations = dcs.UseUniversalLocations; grpcFileCopierConfiguration.UseDomainName = dcs.UseDomainName; return(grpcFileCopierConfiguration); }
/// <summary> /// Cache for <see cref="GrpcCopyClient"/>. /// </summary> public GrpcCopyClientCache(Context context, GrpcCopyClientCacheConfiguration?configuration = null, IClock?clock = null) { configuration ??= new GrpcCopyClientCacheConfiguration(); _configuration = configuration; _grpcCopyClientBufferPool = new ByteArrayPool(configuration.GrpcCopyClientConfiguration.ClientBufferSizeBytes); switch (_configuration.ResourcePoolVersion) { case GrpcCopyClientCacheConfiguration.PoolVersion.Disabled: break; case GrpcCopyClientCacheConfiguration.PoolVersion.V1: _resourcePool = new ResourcePool <GrpcCopyClientKey, GrpcCopyClient>( context, _configuration.ResourcePoolConfiguration, (key) => new GrpcCopyClient(key, _configuration.GrpcCopyClientConfiguration, sharedBufferPool: _grpcCopyClientBufferPool), clock); break; case GrpcCopyClientCacheConfiguration.PoolVersion.V2: _resourcePoolV2 = new ResourcePoolV2 <GrpcCopyClientKey, GrpcCopyClient>( context, _configuration.ResourcePoolConfiguration, (key) => new GrpcCopyClient(key, _configuration.GrpcCopyClientConfiguration, sharedBufferPool: _grpcCopyClientBufferPool), clock); break; } }