Package io.protostuff
Class JsonXOutput
java.lang.Object
io.protostuff.WriteSession
io.protostuff.JsonXOutput
- All Implemented Interfaces:
Output
,StatefulOutput
An optimized json output which is efficient in writing numeric keys and pre-encoded utf8 strings (in byte array
form).
This is the appropriate output sink to use when writing from binary (protostuff,protobuf,etc) pipes.
-
Nested Class Summary
Nested classes/interfaces inherited from class io.protostuff.WriteSession
WriteSession.FlushHandler
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final byte
private static final byte[]
private static final byte[]
private static final byte
private static final byte[]
private static final byte[]
private static final byte
private static final byte[]
(package private) static final byte[]
private static final byte[]
private static final byte[]
private static final byte[]
private static final byte[]
private static final byte[]
private static final byte[]
private int
private boolean
private final boolean
private static final byte
private Schema
<?> (package private) static final int[]
private static final byte
private static final byte
private static final byte[]
Fields inherited from class io.protostuff.WriteSession
flushHandler, head, nextBufferSize, out, sink, size, tail
-
Constructor Summary
ConstructorsConstructorDescriptionJsonXOutput
(LinkedBuffer head, boolean numeric, Schema<?> schema) JsonXOutput
(LinkedBuffer head, OutputStream out, boolean numeric, Schema<?> schema) JsonXOutput
(LinkedBuffer head, OutputStream out, WriteSession.FlushHandler flushHandler, int nextBufferSize, boolean numeric, Schema<?> schema) -
Method Summary
Modifier and TypeMethodDescriptionclear()
The buffer will be cleared (tail will point to the head) and the size will be reset to zero.int
Gets the last field number written.boolean
Returns true if the last written field was a repeated field.boolean
Returns whether the incoming messages' field names are numeric.void
reset()
Resets this output for re-use.void
updateLast
(Schema<?> schema, Schema<?> lastSchema) Updates the schema iflastSchema
was indeed the last schema used.Before serializing a message/object tied to a schema, this should be called.void
writeBool
(int fieldNumber, boolean value, boolean repeated) Writes a boolean field.void
writeByteArray
(int fieldNumber, byte[] value, boolean repeated) Writes a byte array field.void
writeByteRange
(boolean utf8String, int fieldNumber, byte[] value, int offset, int length, boolean repeated) Writes a binary or a pre-encoded utf8 string.void
writeBytes
(int fieldNumber, ByteString value, boolean repeated) Writes a ByteString(wraps byte array) field.void
writeBytes
(int fieldNumber, ByteBuffer value, boolean repeated) Writes a ByteBuffer field.(package private) JsonXOutput
void
writeDouble
(int fieldNumber, double value, boolean repeated) Writes a double field.(package private) JsonXOutput
(package private) JsonXOutput
void
writeEnum
(int fieldNumber, int value, boolean repeated) Writes a enum(its number) field.void
writeFixed32
(int fieldNumber, int value, boolean repeated) Writes a fixed int(4 bytes) field.void
writeFixed64
(int fieldNumber, long value, boolean repeated) Writes a fixed long(8 bytes) field.void
writeFloat
(int fieldNumber, float value, boolean repeated) Writes a float field.void
writeInt32
(int fieldNumber, int value, boolean repeated) Writes a variable int field.void
writeInt64
(int fieldNumber, long value, boolean repeated) Writes a variable long field.private LinkedBuffer
<T> void
writeObject
(int fieldNumber, T value, Schema<T> schema, boolean repeated) Writes an object(using its schema) field.void
writeSFixed32
(int fieldNumber, int value, boolean repeated) Writes a signed+fixed int(4 bytes) field.void
writeSFixed64
(int fieldNumber, long value, boolean repeated) Writes a signed+fixed long(8 bytes) field.void
writeSInt32
(int fieldNumber, int value, boolean repeated) Writes a signed int field.void
writeSInt64
(int fieldNumber, long value, boolean repeated) Writes a signed long field.(package private) JsonXOutput
(package private) JsonXOutput
void
writeString
(int fieldNumber, CharSequence value, boolean repeated) Writes a String field.void
writeUInt32
(int fieldNumber, int value, boolean repeated) Writes an unsigned int field.void
writeUInt64
(int fieldNumber, long value, boolean repeated) Writes an unsigned long field.private static LinkedBuffer
writeUTF8Escaped
(byte[] input, int inStart, int inLen, WriteSink sink, WriteSession session, LinkedBuffer lb) private static LinkedBuffer
writeUTF8Escaped
(CharSequence str, WriteSink sink, WriteSession session, LinkedBuffer lb) Methods inherited from class io.protostuff.WriteSession
flush, flush, flush, getSize, toByteArray
-
Field Details
-
START_OBJECT
private static final byte START_OBJECT- See Also:
-
END_OBJECT
private static final byte END_OBJECT- See Also:
-
START_ARRAY
private static final byte START_ARRAY- See Also:
-
END_ARRAY
private static final byte END_ARRAY- See Also:
-
COMMA
private static final byte COMMA- See Also:
-
QUOTE
private static final byte QUOTE- See Also:
-
TRUE
private static final byte[] TRUE -
FALSE
private static final byte[] FALSE -
KEY_SUFFIX_ARRAY
private static final byte[] KEY_SUFFIX_ARRAY -
KEY_SUFFIX_ARRAY_OBJECT
private static final byte[] KEY_SUFFIX_ARRAY_OBJECT -
KEY_SUFFIX_ARRAY_STRING
private static final byte[] KEY_SUFFIX_ARRAY_STRING -
KEY_SUFFIX_OBJECT
private static final byte[] KEY_SUFFIX_OBJECT -
KEY_SUFFIX_STRING
private static final byte[] KEY_SUFFIX_STRING -
KEY_SUFFIX
private static final byte[] KEY_SUFFIX -
COMMA_AND_QUOTE
private static final byte[] COMMA_AND_QUOTE -
COMMA_AND_START_OBJECT
private static final byte[] COMMA_AND_START_OBJECT -
END_ARRAY_AND_END_OBJECT
private static final byte[] END_ARRAY_AND_END_OBJECT -
END_ARRAY__COMMA__QUOTE
private static final byte[] END_ARRAY__COMMA__QUOTE -
schema
-
numeric
private final boolean numeric -
lastRepeated
private boolean lastRepeated -
lastNumber
private int lastNumber -
HEX_BYTES
static final byte[] HEX_BYTES -
sOutputEscapes
static final int[] sOutputEscapes
-
-
Constructor Details
-
JsonXOutput
-
JsonXOutput
public JsonXOutput(LinkedBuffer head, OutputStream out, WriteSession.FlushHandler flushHandler, int nextBufferSize, boolean numeric, Schema<?> schema) -
JsonXOutput
-
-
Method Details
-
reset
public void reset()Resets this output for re-use.- Overrides:
reset
in classWriteSession
-
clear
Description copied from class:WriteSession
The buffer will be cleared (tail will point to the head) and the size will be reset to zero.- Overrides:
clear
in classWriteSession
-
use
Before serializing a message/object tied to a schema, this should be called. -
isNumeric
public boolean isNumeric()Returns whether the incoming messages' field names are numeric. -
getLastNumber
public int getLastNumber()Gets the last field number written. -
isLastRepeated
public boolean isLastRepeated()Returns true if the last written field was a repeated field. -
updateLast
Description copied from interface:StatefulOutput
Updates the schema iflastSchema
was indeed the last schema used.- Specified by:
updateLast
in interfaceStatefulOutput
-
writeCommaAndStartObject
- Throws:
IOException
-
writeStartObject
- Throws:
IOException
-
writeEndObject
- Throws:
IOException
-
writeStartArray
- Throws:
IOException
-
writeEndArray
- Throws:
IOException
-
writeKey
- Throws:
IOException
-
writeBool
Description copied from interface:Output
Writes a boolean field.- Specified by:
writeBool
in interfaceOutput
- Throws:
IOException
-
writeByteArray
Description copied from interface:Output
Writes a byte array field.- Specified by:
writeByteArray
in interfaceOutput
- Throws:
IOException
-
writeByteRange
public void writeByteRange(boolean utf8String, int fieldNumber, byte[] value, int offset, int length, boolean repeated) throws IOException Description copied from interface:Output
Writes a binary or a pre-encoded utf8 string.- Specified by:
writeByteRange
in interfaceOutput
- Throws:
IOException
-
writeBytes
Description copied from interface:Output
Writes a ByteString(wraps byte array) field.- Specified by:
writeBytes
in interfaceOutput
- Throws:
IOException
-
writeDouble
Description copied from interface:Output
Writes a double field.- Specified by:
writeDouble
in interfaceOutput
- Throws:
IOException
-
writeEnum
Description copied from interface:Output
Writes a enum(its number) field.- Specified by:
writeEnum
in interfaceOutput
- Throws:
IOException
-
writeFixed32
Description copied from interface:Output
Writes a fixed int(4 bytes) field.- Specified by:
writeFixed32
in interfaceOutput
- Throws:
IOException
-
writeFixed64
Description copied from interface:Output
Writes a fixed long(8 bytes) field.- Specified by:
writeFixed64
in interfaceOutput
- Throws:
IOException
-
writeFloat
Description copied from interface:Output
Writes a float field.- Specified by:
writeFloat
in interfaceOutput
- Throws:
IOException
-
writeInt32
Description copied from interface:Output
Writes a variable int field.- Specified by:
writeInt32
in interfaceOutput
- Throws:
IOException
-
writeInt64
Description copied from interface:Output
Writes a variable long field.- Specified by:
writeInt64
in interfaceOutput
- Throws:
IOException
-
writeSFixed32
Description copied from interface:Output
Writes a signed+fixed int(4 bytes) field.- Specified by:
writeSFixed32
in interfaceOutput
- Throws:
IOException
-
writeSFixed64
Description copied from interface:Output
Writes a signed+fixed long(8 bytes) field.- Specified by:
writeSFixed64
in interfaceOutput
- Throws:
IOException
-
writeSInt32
Description copied from interface:Output
Writes a signed int field.- Specified by:
writeSInt32
in interfaceOutput
- Throws:
IOException
-
writeSInt64
Description copied from interface:Output
Writes a signed long field.- Specified by:
writeSInt64
in interfaceOutput
- Throws:
IOException
-
writeString
Description copied from interface:Output
Writes a String field.- Specified by:
writeString
in interfaceOutput
- Throws:
IOException
-
writeUInt32
Description copied from interface:Output
Writes an unsigned int field.- Specified by:
writeUInt32
in interfaceOutput
- Throws:
IOException
-
writeUInt64
Description copied from interface:Output
Writes an unsigned long field.- Specified by:
writeUInt64
in interfaceOutput
- Throws:
IOException
-
writeObject
public <T> void writeObject(int fieldNumber, T value, Schema<T> schema, boolean repeated) throws IOException Description copied from interface:Output
Writes an object(using its schema) field.- Specified by:
writeObject
in interfaceOutput
- Throws:
IOException
-
writeUTF8Escaped
private static LinkedBuffer writeUTF8Escaped(byte[] input, int inStart, int inLen, WriteSink sink, WriteSession session, LinkedBuffer lb) throws IOException - Throws:
IOException
-
writeUTF8Escaped
private static LinkedBuffer writeUTF8Escaped(CharSequence str, WriteSink sink, WriteSession session, LinkedBuffer lb) throws IOException - Throws:
IOException
-
writeBytes
Writes a ByteBuffer field.- Specified by:
writeBytes
in interfaceOutput
- Throws:
IOException
-