IOContext
Date: 2016-12-03

com.fasterxml.jackson.core.io

## Class IOContext

- java.lang.Object
- - com.fasterxml.jackson.core.io.IOContext

-     public class IOContext
      extends java.lang.Object

  To limit number of configuration and state objects to pass, all contextual objects that need to be passed by the factory to readers and writers are combined under this object. One instance is created for each reader and writer.

  NOTE: non-final since 2.4, to allow sub-classing.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected byte[]` | `_base64Buffer` Reference to the buffer allocated for temporary use with base64 encoding or decoding.
    `protected BufferRecycler` | `_bufferRecycler` Recycler used for actual allocation/deallocation/reuse
    `protected char[]` | `_concatCBuffer` Reference to the buffer allocated for buffering it for output, before being encoded: generally this means concatenating output, then encoding when buffer fills up.
    `protected JsonEncoding` | `_encoding` Encoding used by the underlying stream, if known.
    `protected boolean` | `_managedResource` Flag that indicates whether underlying input/output source/target object is fully managed by the owner of this context (parser or generator).
    `protected char[]` | `_nameCopyBuffer` Reference temporary buffer Parser instances need if calling app decides it wants to access name via 'getTextCharacters' method.
    `protected byte[]` | `_readIOBuffer` Reference to the allocated I/O buffer for low-level input reading, if any allocated.
    `protected java.lang.Object` | `_sourceRef` Reference to the source object, which can be used for displaying location information
    `protected char[]` | `_tokenCBuffer` Reference to the buffer allocated for tokenization purposes, in which character input is read, and from which it can be further returned.
    `protected byte[]` | `_writeEncodingBuffer` Reference to the allocated I/O buffer used for low-level encoding-related buffering.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IOContext(BufferRecycler br, java.lang.Object sourceRef, boolean managedResource)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_verifyAlloc(java.lang.Object buffer)`
    `protected void` | `_verifyRelease(byte[] toRelease, byte[] src)`
    `protected void` | `_verifyRelease(char[] toRelease, char[] src)`
    `byte[]` | `allocBase64Buffer()`
    `char[]` | `allocConcatBuffer()`
    `char[]` | `allocNameCopyBuffer(int minSize)`
    `byte[]` | `allocReadIOBuffer()` Note: the method can only be called once during its life cycle.
    `byte[]` | `allocReadIOBuffer(int minSize)`
    `char[]` | `allocTokenBuffer()`
    `char[]` | `allocTokenBuffer(int minSize)`
    `byte[]` | `allocWriteEncodingBuffer()`
    `byte[]` | `allocWriteEncodingBuffer(int minSize)`
    `TextBuffer` | `constructTextBuffer()`
    `JsonEncoding` | `getEncoding()`
    `java.lang.Object` | `getSourceReference()`
    `boolean` | `isResourceManaged()`
    `void` | `releaseBase64Buffer(byte[] buf)`
    `void` | `releaseConcatBuffer(char[] buf)`
    `void` | `releaseNameCopyBuffer(char[] buf)`
    `void` | `releaseReadIOBuffer(byte[] buf)` Method to call when all the processing buffers can be safely recycled.
    `void` | `releaseTokenBuffer(char[] buf)`
    `void` | `releaseWriteEncodingBuffer(byte[] buf)`
    `void` | `setEncoding(JsonEncoding enc)`
    `IOContext` | `withEncoding(JsonEncoding enc)`

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

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

- - ### Field Detail

    - #### _sourceRef

          protected final java.lang.Object _sourceRef

      Reference to the source object, which can be used for displaying location information

    - #### _encoding

          protected JsonEncoding _encoding

      Encoding used by the underlying stream, if known.

    - #### _managedResource

          protected final boolean _managedResource

      Flag that indicates whether underlying input/output source/target object is fully managed by the owner of this context (parser or generator). If true, it is, and is to be closed by parser/generator; if false, calling application has to do closing (unless auto-closing feature is enabled for the parser/generator in question; in which case it acts like the owner).

    - #### _bufferRecycler

          protected final BufferRecycler _bufferRecycler

      Recycler used for actual allocation/deallocation/reuse

    - #### _readIOBuffer

          protected byte[] _readIOBuffer

      Reference to the allocated I/O buffer for low-level input reading, if any allocated.

    - #### _writeEncodingBuffer

          protected byte[] _writeEncodingBuffer

      Reference to the allocated I/O buffer used for low-level encoding-related buffering.

    - #### _base64Buffer

          protected byte[] _base64Buffer

      Reference to the buffer allocated for temporary use with base64 encoding or decoding.

    - #### _tokenCBuffer

          protected char[] _tokenCBuffer

      Reference to the buffer allocated for tokenization purposes, in which character input is read, and from which it can be further returned.

    - #### _concatCBuffer

          protected char[] _concatCBuffer

      Reference to the buffer allocated for buffering it for output, before being encoded: generally this means concatenating output, then encoding when buffer fills up.

    - #### _nameCopyBuffer

          protected char[] _nameCopyBuffer

      Reference temporary buffer Parser instances need if calling app decides it wants to access name via 'getTextCharacters' method. Regular text buffer can not be used as it may contain textual representation of the value token.

  - ### Constructor Detail

    - #### IOContext

          public IOContext(BufferRecycler br,
                   java.lang.Object sourceRef,
                   boolean managedResource)

  - ### Method Detail

    - #### setEncoding

          public void setEncoding(JsonEncoding enc)

    - #### withEncoding

          public IOContext withEncoding(JsonEncoding enc)

      Since:
        1.6

    - #### getSourceReference

          public java.lang.Object getSourceReference()

    - #### getEncoding

          public JsonEncoding getEncoding()

    - #### isResourceManaged

          public boolean isResourceManaged()

    - #### constructTextBuffer

          public TextBuffer constructTextBuffer()

    - #### allocReadIOBuffer

          public byte[] allocReadIOBuffer()

      Note: the method can only be called once during its life cycle. This is to protect against accidental sharing.

    - #### allocReadIOBuffer

          public byte[] allocReadIOBuffer(int minSize)

      Since:
        2.4

    - #### allocWriteEncodingBuffer

          public byte[] allocWriteEncodingBuffer()

    - #### allocWriteEncodingBuffer

          public byte[] allocWriteEncodingBuffer(int minSize)

      Since:
        2.4

    - #### allocBase64Buffer

          public byte[] allocBase64Buffer()

      Since:
        2.1

    - #### allocTokenBuffer

          public char[] allocTokenBuffer()

    - #### allocTokenBuffer

          public char[] allocTokenBuffer(int minSize)

      Since:
        2.4

    - #### allocConcatBuffer

          public char[] allocConcatBuffer()

    - #### allocNameCopyBuffer

          public char[] allocNameCopyBuffer(int minSize)

    - #### releaseReadIOBuffer

          public void releaseReadIOBuffer(byte[] buf)

      Method to call when all the processing buffers can be safely recycled.

    - #### releaseWriteEncodingBuffer

          public void releaseWriteEncodingBuffer(byte[] buf)

    - #### releaseBase64Buffer

          public void releaseBase64Buffer(byte[] buf)

    - #### releaseTokenBuffer

          public void releaseTokenBuffer(char[] buf)

    - #### releaseConcatBuffer

          public void releaseConcatBuffer(char[] buf)

    - #### releaseNameCopyBuffer

          public void releaseNameCopyBuffer(char[] buf)

    - #### _verifyAlloc

          protected final void _verifyAlloc(java.lang.Object buffer)

    - #### _verifyRelease

          protected final void _verifyRelease(byte[] toRelease,
                            byte[] src)

    - #### _verifyRelease

          protected final void _verifyRelease(char[] toRelease,
                            char[] src)