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.
- Alphabetic
- By Inheritance
- BucketingInputSource
- InputSource
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
BucketingInputSource(inputStream: InputStream, bucketSize: Int = 1 << 13, maxCacheSizeInBytes: Int = 256 * (1 << 20))
- inputStream
the java.io.Inputstream to read data from
- bucketSize
the size of each individual bucket
- maxCacheSizeInBytes
the max memory allowed to be used for bucket storage (num buckets * bucketSize)
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
var
_isValid: Boolean
- Attributes
- protected
- Definition Classes
- InputSource
-
def
areBytesAvailable(nBytes: Long): Boolean
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
- BucketingInputSource → InputSource
-
final
def
areDebugging: Boolean
- Definition Classes
- InputSource
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
bytesAvailable(): Long
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
- BucketingInputSource → InputSource
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
compact(): Unit
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
- BucketingInputSource → InputSource
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
get(dest: Array[Byte], off: Int, len: Int): Boolean
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
- BucketingInputSource → InputSource
-
def
get(): Int
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
- BucketingInputSource → InputSource
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hasReachedEndOfData: Boolean
Determine if the InputSource has encountered the end-of-data.
Determine if the InputSource has encountered the end-of-data.
This does NOT perform a read operation (which would be blocking), but just answers the question of whether prior read operations in fact encountered the -1 indicating end-of-data
- Definition Classes
- BucketingInputSource → InputSource
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
isValid: Boolean
- Definition Classes
- InputSource
-
def
lockPosition(bytePos0b: Long): Unit
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
- BucketingInputSource → InputSource
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
position(bytePos0b: Long): Unit
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
- BucketingInputSource → InputSource
-
def
position(): Long
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
- BucketingInputSource → InputSource
-
def
releasePosition(bytePos0b: Long): Unit
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
- BucketingInputSource → InputSource
-
final
def
setDebugging(setting: Boolean): Unit
- Definition Classes
- InputSource
-
final
def
setInvalid(): Unit
- Definition Classes
- InputSource
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()