Package io.grpc

Class DecompressorRegistry

java.lang.Object
io.grpc.DecompressorRegistry

@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704") @ThreadSafe public final class DecompressorRegistry extends Object
Encloses classes related to the compression and decompression of messages.
  • Field Details

    • ACCEPT_ENCODING_JOINER

      static final com.google.common.base.Joiner ACCEPT_ENCODING_JOINER
    • DEFAULT_INSTANCE

      private static final DecompressorRegistry DEFAULT_INSTANCE
    • decompressors

      private final Map<String,DecompressorRegistry.DecompressorInfo> decompressors
    • advertisedDecompressors

      private final byte[] advertisedDecompressors
  • Constructor Details

    • DecompressorRegistry

      private DecompressorRegistry(Decompressor d, boolean advertised, DecompressorRegistry parent)
    • DecompressorRegistry

      private DecompressorRegistry()
  • Method Details

    • emptyInstance

      public static DecompressorRegistry emptyInstance()
    • getDefaultInstance

      public static DecompressorRegistry getDefaultInstance()
    • with

      public DecompressorRegistry with(Decompressor d, boolean advertised)
      Registers a decompressor for both decompression and message encoding negotiation. Returns a new registry.
      Parameters:
      d - The decompressor to register
      advertised - If true, the message encoding will be listed in the Accept-Encoding header.
    • getKnownMessageEncodings

      public Set<String> getKnownMessageEncodings()
      Provides a list of all message encodings that have decompressors available.
    • getRawAdvertisedMessageEncodings

      byte[] getRawAdvertisedMessageEncodings()
    • getAdvertisedMessageEncodings

      @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704") public Set<String> getAdvertisedMessageEncodings()
      Provides a list of all message encodings that have decompressors available and should be advertised.

      The specification doesn't say anything about ordering, or preference, so the returned codes can be arbitrary.

    • lookupDecompressor

      @Nullable public Decompressor lookupDecompressor(String messageEncoding)
      Returns a decompressor for the given message encoding, or null if none has been registered.

      This ignores whether the compressor is advertised. According to the spec, if we know how to process this encoding, we attempt to, regardless of whether or not it is part of the encodings sent to the remote host.