Package org.apache.pekko.serialization
Class NestedDeserialization
- java.lang.Object
-
- org.apache.pekko.serialization.NestedDeserialization
-
public class NestedDeserialization extends java.lang.ObjectINTERNAL APIBounds how deeply one deserialization may nest.
Several wire formats carry a nested payload: the enclosed message is an opaque byte array that is deserialized in turn, and that payload may itself enclose another. Each level is parsed on its own, so a protobuf parser's nesting limit does not bound the chain - only the size of the message does. Recursion therefore tracks the nesting rather than the size of the message, and a sufficiently deep chain fails with a
StackOverflowErrorinstead of a serialization error.The depth is per thread because one message is deserialized synchronously on one thread.
-
-
Constructor Summary
Constructors Constructor Description NestedDeserialization()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> TatNextLevel(int max, scala.Function0<T> body)Runsbodyone level deeper, failing withNotSerializableException- the ordinary way a message that cannot be deserialized is reported - when the nesting exceedsmax.static intcurrentDepth()Current nesting depth, for testing.
-
-
-
Method Detail
-
atNextLevel
public static <T> T atNextLevel(int max, scala.Function0<T> body)Runsbodyone level deeper, failing withNotSerializableException- the ordinary way a message that cannot be deserialized is reported - when the nesting exceedsmax.
-
currentDepth
public static int currentDepth()
Current nesting depth, for testing.
-
-