Class

org.apache.daffodil.io

BucketingInputSource

Related Doc: package io

Permalink

class BucketingInputSource extends InputSource

Implements the InputSource interface, reading data from a generic java.io.InputStream and storing the data in buckets of a defined size. Buckets are freed when no "locks" exist inside the bucket to minimize memory usage. Note that "locks" in this sense are the InputSource locks on bytePosition and are not about syncrhonization. This more of a reference count, counting buckets to determine which buckets are no longer needed and can be freed when the reference count goes to zero.

Linear Supertypes
InputSource, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BucketingInputSource
  2. InputSource
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new BucketingInputSource(inputStream: InputStream, bucketSize: Int = 1 << 13)

    Permalink

    inputStream

    the java.io.Inputstream to read data from

    bucketSize

    the size of each individual bucket

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def areBytesAvailable(nBytes: Long): Boolean

    Permalink

    Determines whether the input stream has nBytes more bytes available starting at the current byte position.

    Determines whether the input stream has nBytes more bytes available starting at the current byte position. Read bytes are cached in buckets. Blocks until either nBytes are known to be available or EOF is reached. Does not advance the current byte position.

    nBytes

    the number of bytes to determine if are available

    returns

    true if nBytes are available, false otherwise

    Definition Classes
    BucketingInputSourceInputSource
  5. final def areDebugging: Boolean

    Permalink
    Definition Classes
    InputSource
  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def bytesAvailable(): Long

    Permalink

    Calculate how many bytes are currently buffered starting from the current position

    Calculate how many bytes are currently buffered starting from the current position

    Definition Classes
    BucketingInputSourceInputSource
  8. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. def compact(): Unit

    Permalink

    This should be called when at the end of a parse when all marks have been released, or just called periodically to ensure the size of the buckets arraybuffer does not grow too big.

    This should be called when at the end of a parse when all marks have been released, or just called periodically to ensure the size of the buckets arraybuffer does not grow too big. This will move all existing buckets to the front of the buckets ArrayBuffer and update offsets accordingly. This way, there are not a bunch of null empty buckets at the front of the buckets array taking up space.

    Definition Classes
    BucketingInputSourceInputSource
  10. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. def get(dest: Array[Byte], off: Int, len: Int): Boolean

    Permalink

    Return a byte array with data from the current byte position.

    Return a byte array with data from the current byte position. Stores the next len bytes of data in dest starting at index off. Returns true if len bytes are available, false otherwise and writes nothing to dest.

    returns

    true if len bytes are available and written to the dest array, false otherwise

    Definition Classes
    BucketingInputSourceInputSource
  14. def get(): Int

    Permalink

    Return a single byte at the current byte position.

    Return a single byte at the current byte position. Increments curBytePosition0b if successful. The Byte is return as an integer in the range 0 to 255. Returns -1 if EOF is reached.

    returns

    the byte at the current byte position if it exists, or -1 if EOF is reached.

    Definition Classes
    BucketingInputSourceInputSource
  15. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  16. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  17. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  18. def lockPosition(bytePos0b: Long): Unit

    Permalink

    Set the specified byte position as a location that that one may want to call setPosition in the future.

    Set the specified byte position as a location that that one may want to call setPosition in the future. This is essentially setting a mark in the data that can be reset back to later. Implementations are allowed to free any bytes before a locked byte position. Any bytes after a locked position cannot be freed until that lock is release.

    Note that this "lock" has nothing to do with synchronization, but behaves more like marks that must be accessable until released.

    bytePos0b

    the byte position to lock

    Definition Classes
    BucketingInputSourceInputSource
  19. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  20. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  21. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  22. def position(bytePos0b: Long): Unit

    Permalink

    Set the current byte position, using zero-based indexing

    Set the current byte position, using zero-based indexing

    bytPos0b cannot be greater than the most recent read data. In other words, this can only be used to move backwards in data.

    bytePos0b

    the new current byte position

    Definition Classes
    BucketingInputSourceInputSource
  23. def position(): Long

    Permalink

    Get the current byte position, using zero-based indexing

    Get the current byte position, using zero-based indexing

    returns

    the current byte position

    Definition Classes
    BucketingInputSourceInputSource
  24. def releasePosition(bytePos0b: Long): Unit

    Permalink

    Release a previously locked byte position, allowing the implementation to free any unlocked bytes.

    Release a previously locked byte position, allowing the implementation to free any unlocked bytes.

    bytePos0b

    the byte position to release

    Definition Classes
    BucketingInputSourceInputSource
  25. final def setDebugging(setting: Boolean): Unit

    Permalink
    Definition Classes
    InputSource
  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  28. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from InputSource

Inherited from AnyRef

Inherited from Any

Ungrouped