Package org.apache.coyote.http2

## Class HPackHuffman

- java.lang.Object
- - org.apache.coyote.http2.HPackHuffman

-     public class HPackHuffman
      extends Object

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `HPackHuffman.HuffmanCode` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static StringManager` | `sm` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `HPackHuffman()` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | `decode​(ByteBuffer data, int length, StringBuilder target)` | Decodes a huffman encoded string into the target StringBuilder.
    `static boolean` | `encode​(ByteBuffer buffer, String toEncode, boolean forceLowercase)` | Encodes the given string into the buffer.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### sm

          protected static final StringManager sm

  - ### Constructor Detail

    - #### HPackHuffman

          public HPackHuffman()

  - ### Method Detail

    - #### decode

          public static void decode​(ByteBuffer data,
                                    int length,
                                    StringBuilder target)
                             throws org.apache.coyote.http2.HpackException

      Decodes a huffman encoded string into the target StringBuilder. There must be enough space left in the buffer for this method to succeed.
      Parameters:
        `data` - The byte buffer
        `length` - The length of data from the buffer to decode
        `target` - The target for the decompressed data
      Throws:
        `org.apache.coyote.http2.HpackException` - If the Huffman encoded value in HPACK headers did not end with EOS padding

    - #### encode

          public static boolean encode​(ByteBuffer buffer,
                                       String toEncode,
                                       boolean forceLowercase)

      Encodes the given string into the buffer. If there is not enough space in the buffer, or the encoded version is bigger than the original it will return false and not modify the buffers position.
      Parameters:
        `buffer` - The buffer to encode into
        `toEncode` - The string to encode
        `forceLowercase` - If the string should be encoded in lower case
      Returns:
        true if encoding succeeded