This is an internal fork of Twitter HPACK for http4s that has been ported to pure Scala and cross-built for Scala.js and Scala Native.
HPACK can be downloaded from the Maven central repository. Add the following dependency section to your pom.xml file:
<dependency>
<groupId>com.twitter</groupId>
<artifactId>hpack</artifactId>
<version>1.0.1</version>
</dependency>
This library provides support for compression of header lists into header blocks. The following code fragment demonstrates the use of Encoder and Decoder:
try {
int maxHeaderSize = 4096;
int maxHeaderTableSize = 4096;
byte[] name = "name".getBytes();
byte[] value = "value".getBytes();
boolean sensitive = false;
ByteArrayOutputStream out = new ByteArrayOutputStream();
// encode header list into header block
Encoder encoder = new Encoder(maxHeaderTableSize);
encoder.encodeHeader(out, name, value, sensitive);
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
HeaderListener listener = new HeaderListener() {
@Override
public void addHeader(byte[] name, byte[] value, boolean sensitive) {
// handle header field
}
};
// decode header list from header block
Decoder decoder = new Decoder(maxHeaderSize, maxHeaderTableSize);
decoder.decode(in, listener);
decoder.endHeaderBlock();
} catch (IOException e) {
// handle exception
}
If you find any issues please report them or better, send a pull request.
- Jeff Pinner https://twitter.com/jpinner
- Bill Gallagher https://twitter.com/billjgallagher
Copyright 2013 Twitter, Inc.
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0