Example #1
0
        /// <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);
        }
Example #2
0
        /// <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;
            }
        }