trait BufferingInputStreamParser extends BufferingByteParser
Defines common functionality to any parser that works on a java.io.InputStream
Allows you to look up individual bytes by index, take slices of byte ranges or strings, and drop old portions of buffered data once you are certain you no longer need them.
The buffer
size is managed by allowing it to grow in size until it exceeds its
capacity. When that happens, one of two things happen:
- If the buffer has enough space, we left-shift the data in the buffer to over-write the portion that has already been dropped.
- If the buffer does not have enough space, we allocate a new buffer big enough to hold the new data we need to store (size a power of two multiple of the old size) and copy the data over, again shifted left .
- Alphabetic
- By Inheritance
- BufferingInputStreamParser
- BufferingByteParser
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def inputStream: InputStream
- abstract def maxBufferStartSize: Int
- abstract def minBufferStartSize: Int
Concrete 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
- def appendBytesToBuilder(bytes: ByteBuilder, bytesStart: Int, bytesLength: Int): Unit
- Definition Classes
- BufferingByteParser
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def dropBufferUntil(i: Int): Unit
- Definition Classes
- BufferingByteParser
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def getBuffer: Array[Byte]
- Definition Classes
- BufferingByteParser
- def getBufferCopyCount(): Int
- Definition Classes
- BufferingByteParser
- def getBufferGrowCount(): Int
- Definition Classes
- BufferingByteParser
- def getBufferLength(): Int
- Definition Classes
- BufferingByteParser
- def getByteSafe(i: Int): Byte
- Definition Classes
- BufferingByteParser
- def getByteUnsafe(i: Int): Byte
- Definition Classes
- BufferingByteParser
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getFirstIdx: Int
- Definition Classes
- BufferingByteParser
- def getLastIdx: Int
- Definition Classes
- BufferingByteParser
- def growBuffer(until: Int): Unit
Copies the non-dropped Bytes in the current buffer to the start of either the current buffer, or a newly-allocated larger buffer if necessary.
Copies the non-dropped Bytes in the current buffer to the start of either the current buffer, or a newly-allocated larger buffer if necessary.
- Definition Classes
- BufferingByteParser
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- 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 readDataIntoBuffer(buffer: Array[Byte], bufferOffset: Int): (Array[Byte], Boolean, Int)
- Definition Classes
- BufferingInputStreamParser → BufferingByteParser
- def requestUntil(until: Int): Boolean
Used to ensure that byteents up to until are available to read; returns whether or not we have read off the end of the input.
Used to ensure that byteents up to until are available to read; returns whether or not we have read off the end of the input.
In the fast path, when until is less than the lastIdx we have buffered, there is no work to do and we return false.
In the slow path, when until is more than lastIdx, we then run growBuffer to grow the buffer if necessary, and then readDataIntoBuffer to populate it. readDataIntoBuffer returns a
newDone
value to indicate whether we have read off the end of the input or not.Note that for some subclasses, growBuffer may be a no-op when we already know we have reached the end of input.
- Attributes
- protected
- Definition Classes
- BufferingByteParser
- def requestUntilGetSafeIndex(until: Int): Int
Used to ask for data up to a certain index, as a best effort (unlike requestUntil), returning the "safe index" which it was actually able to fetch data for.
Used to ask for data up to a certain index, as a best effort (unlike requestUntil), returning the "safe index" which it was actually able to fetch data for. This is used so the caller can use the safe index to know how far it is able to run getByteUnsafe calls without further checks, improving performance over calling getByteSafe every time which performs additional checks and logic
- Attributes
- protected
- Definition Classes
- BufferingByteParser
- def sliceArr(i: Int, n: Int): (Array[Byte], Int, Int)
- Definition Classes
- BufferingByteParser
- def sliceString(i: Int, k: Int): String
- Definition Classes
- BufferingByteParser
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unsafeCharSeqForRange(start: Int, length: Int): WrapByteArrayCharSeq
- Definition Classes
- BufferingByteParser
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()