Package org.apache.tomcat.util.buf
Buffers and Encodings
This package contains buffers and utils to perform encoding/decoding of buffers. That includes byte to char conversions, URL encodings, etc.Encoding is a critical operation for performance. There are few tricks in this package - the C2B and B2C converters are caching an ISReader/OSWriter and keep everything allocated to do the conversions in any VM without any garbage.
This package must accommodate future extensions and additional converters ( most important: the nio.charset, which should be detected and used if available ). Also, we do have one hand-written UTF8Decoder, and other tuned encoders could be added.
My benchmarks ( I'm costin :-) show only small differences between C2B, B2C and hand-written codders/decoders, so UTF8Decoder may be disabled.
-
Interface Summary Interface Description ByteChunk.ByteInputChannel Input interface, used when the buffer is empty.ByteChunk.ByteOutputChannel When we need more space we'll either grow the buffer ( up to the limit ) or send it to a channel.CharChunk.CharInputChannel Input interface, used when the buffer is empty.CharChunk.CharOutputChannel When we need more space we'll either grow the buffer ( up to the limit ) or send it to a channel. -
Class Summary Class Description AbstractChunk Base class for the *Chunk implementation to reduce duplication.Ascii This class implements some basic ASCII character handling functions.Asn1Parser This is a very basic ASN.1 parser that provides the limited functionality required by Tomcat.Asn1Writer B2CConverter NIO based character decoder.ByteBufferHolder Simple wrapper for aByteBuffer
that remembers if the buffer has been flipped or not.ByteBufferUtils ByteChunk This class is used to represent a chunk of bytes, and utilities to manipulate byte[].C2BConverter NIO based character encoder.CharChunk Utilities to manipulate char chunks.CharsetCache CharsetUtil HexUtils Tables useful when converting byte arrays to and from strings of hexadecimal digits.MessageBytes This class is used to represent a subarray of bytes in an HTTP message.StringCache This class implements a String cache for ByteChunk and CharChunk.StringUtils Utility methods to build a separated list from a given set (not java.util.Set) of inputs and return that list as a string or append it to an existing StringBuilder.UDecoder All URL decoding happens here.UEncoder Efficient implementation of a UTF-8 encoder.UriUtil Utility class for working with URIs and URLs.Utf8Decoder Decodes bytes to UTF-8.Utf8Encoder Encodes characters as bytes using UTF-8. -
Enum Summary Enum Description EncodedSolidusHandling UEncoder.SafeCharsSet -
Exception Summary Exception Description ByteChunk.BufferOverflowException