Returns the type of the value that can be read from this Input.
Returns the type of the value that can be read from this Input. Only four types can be distinguished (see InputType for more details on this).
If this method returns InputType.Null,
then readNull()
can be safely called.
If this method returns InputType.Object,
then AT LEAST ONE OF readObject()
and readMap()
can be safely called.
If this method returns InputType.List,
then AT LEAST ONE OF readList()
and readSet()
can be safely called.
If this method returns InputType.Simple
then AT LEAST ONE OF readString()
, readChar()
, readBoolean()
,
readByte()
, readShort()
, readInt()
, readLong()
, readTimestamp()
, readFloat()
, readDouble()
,
readBinary()
can be called.
It's impossible to know which of the listed methods is actually safe to call based only on
InputType.
It is the responsibility of GenCodec implementation to have
reading and writing logic consistent.
For example, if writeDouble(Double)
is used during writing then readDouble()
must be used during reading
by the same GenCodec.
Represents an abstract source from which a value may be deserialized (read). Each of the
read
methods tries to read a value of specified type and may throw an exception (usually ReadFailure) when reading is not successful.An Input value should be assumed to be stateful. If any of the
readX
methods have already been called, the Input instance can no longer be used and MUST be discarded.In order to ignore the value kept in this Input,
skip()
MUST be called.In summary: every Input MUST be fully exhausted by either calling one of the
read
methods which returns successful value or by callingskip()
. Also, ListInput and ObjectInput instances returned from this Input must also be fully exhausted on their own.