class
ParserSizeTracker extends AnyRef
Instance Constructors
-
new
ParserSizeTracker(maxSize: Option[DataSize], histogramOpt: Option[Histogram] = scala.None)
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
def
add(num: Int): Unit
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
val
max: Long
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
def
reset(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
def
track[T](buffer: DataBuffer)(op: ⇒ Option[T]): Option[T]
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
A ParserSizeTracker can wrap a stream parser to ensure that the object being parsed doesn't exceed a certain size.
The size tracker is not exact. It simply looks at how many bytes are read off the DataBuffer each time the track method is called. Since in most cases databuffers are fairly small (128Kb right now for buffers coming out of the event loop), and since the primary purpose for this is to prevent OOM exceptions due to very large requests, the lack of precision isn't a huge issue.