コード例 #1
0
        private ICompressionProvider?ResolveCompressionProvider()
        {
            Debug.Assert(
                _call.RequestGrpcEncoding != null,
                "Response encoding should have been calculated at this point.");

            var canCompress =
                GrpcProtocolHelpers.CanWriteCompressed(CallOptions.WriteOptions) &&
                !string.Equals(_call.RequestGrpcEncoding, GrpcProtocolConstants.IdentityGrpcEncoding, StringComparison.Ordinal);

            if (canCompress)
            {
                if (_call.Channel.CompressionProviders.TryGetValue(_call.RequestGrpcEncoding, out var compressionProvider))
                {
                    return(compressionProvider);
                }

                throw new InvalidOperationException($"Could not find compression provider for '{_call.RequestGrpcEncoding}'.");
            }

            return(null);
        }