Package org.fusesource.hawtbuf.proto
Class CodedOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- org.fusesource.hawtbuf.proto.CodedOutputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable
public final class CodedOutputStream extends java.io.FilterOutputStreamEncodes and writes protocol message fields.This class contains two kinds of methods: methods that write specific protocol message constructs and field types (e.g.
writeTag(int, int)andwriteInt32(int, int)) and methods that write low-level values (e.g.writeRawVarint32(int)andwriteRawBytes(byte[])). If you are writing encoded protocol messages, you should use the former methods, but if you are writing some other format of your own design, use the latter.This class is totally unsynchronized.
-
-
Field Summary
Fields Modifier and Type Field Description private BufferOutputStreambosstatic intLITTLE_ENDIAN_32_SIZEstatic intLITTLE_ENDIAN_64_SIZE
-
Constructor Summary
Constructors Constructor Description CodedOutputStream(byte[] data)CodedOutputStream(java.io.OutputStream os)CodedOutputStream(Buffer data)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckNoSpaceLeft()static intcomputeBoolSize(int fieldNumber, boolean value)Compute the number of bytes that would be needed to encode aboolfield, including tag.static intcomputeBytesSize(int fieldNumber, Buffer value)Compute the number of bytes that would be needed to encode abytesfield, including tag.static intcomputeDoubleSize(int fieldNumber, double value)Compute the number of bytes that would be needed to encode adoublefield, including tag.static intcomputeEnumSize(int fieldNumber, int value)Compute the number of bytes that would be needed to encode an enum field, including tag.static intcomputeFixed32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode afixed32field, including tag.static intcomputeFixed64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode afixed64field, including tag.static intcomputeFloatSize(int fieldNumber, float value)Compute the number of bytes that would be needed to encode afloatfield, including tag.static intcomputeInt32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode anint32field, including tag.static intcomputeInt64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode anint64field, including tag.static intcomputeRawVarint32Size(int value)Compute the number of bytes that would be needed to encode a varint.static intcomputeRawVarint64Size(long value)Compute the number of bytes that would be needed to encode a varint.static intcomputeSFixed32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode ansfixed32field, including tag.static intcomputeSFixed64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode ansfixed64field, including tag.static intcomputeSInt32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode ansint32field, including tag.static intcomputeSInt64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode ansint64field, including tag.static intcomputeStringSize(int fieldNumber, java.lang.String value)Compute the number of bytes that would be needed to encode astringfield, including tag.static intcomputeTagSize(int fieldNumber)Compute the number of bytes that would be needed to encode a tag.static intcomputeUInt32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode auint32field, including tag.static intcomputeUInt64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode auint64field, including tag.static intencodeZigZag32(int n)Encode a ZigZag-encoded 32-bit value.static longencodeZigZag64(long n)Encode a ZigZag-encoded 64-bit value.BuffergetNextBuffer(int size)voidwriteBool(int fieldNumber, boolean value)Write aboolfield, including tag, to the stream.voidwriteBytes(int fieldNumber, Buffer value)Write abytesfield, including tag, to the stream.voidwriteDouble(int fieldNumber, double value)Write adoublefield, including tag, to the stream.voidwriteEnum(int fieldNumber, int value)Write an enum field, including tag, to the stream.voidwriteFixed32(int fieldNumber, int value)Write afixed32field, including tag, to the stream.voidwriteFixed64(int fieldNumber, long value)Write afixed64field, including tag, to the stream.voidwriteFloat(int fieldNumber, float value)Write afloatfield, including tag, to the stream.voidwriteInt32(int fieldNumber, int value)Write anint32field, including tag, to the stream.voidwriteInt64(int fieldNumber, long value)Write anint64field, including tag, to the stream.voidwriteRawByte(byte value)Write a single byte.voidwriteRawByte(int value)Write a single byte, represented by an integer value.voidwriteRawBytes(byte[] value)Write an array of bytes.voidwriteRawBytes(byte[] value, int offset, int length)Write part of an array of bytes.voidwriteRawBytes(Buffer data)voidwriteRawLittleEndian32(int value)Write a little-endian 32-bit integer.voidwriteRawLittleEndian64(long value)Write a little-endian 64-bit integer.voidwriteRawVarint32(int value)Encode and write a varint.voidwriteRawVarint64(long value)Encode and write a varint.voidwriteSFixed32(int fieldNumber, int value)Write ansfixed32field, including tag, to the stream.voidwriteSFixed64(int fieldNumber, long value)Write ansfixed64field, including tag, to the stream.voidwriteSInt32(int fieldNumber, int value)Write ansint32field, including tag, to the stream.voidwriteSInt64(int fieldNumber, long value)Write ansint64field, including tag, to the stream.voidwriteString(int fieldNumber, java.lang.String value)Write astringfield, including tag, to the stream.voidwriteTag(int fieldNumber, int wireType)Encode and write a tag.voidwriteUInt32(int fieldNumber, int value)Write auint32field, including tag, to the stream.voidwriteUInt64(int fieldNumber, long value)Write auint64field, including tag, to the stream.
-
-
-
Field Detail
-
bos
private BufferOutputStream bos
-
LITTLE_ENDIAN_32_SIZE
public static final int LITTLE_ENDIAN_32_SIZE
- See Also:
- Constant Field Values
-
LITTLE_ENDIAN_64_SIZE
public static final int LITTLE_ENDIAN_64_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CodedOutputStream
public CodedOutputStream(java.io.OutputStream os)
-
CodedOutputStream
public CodedOutputStream(byte[] data)
-
CodedOutputStream
public CodedOutputStream(Buffer data)
-
-
Method Detail
-
writeDouble
public void writeDouble(int fieldNumber, double value) throws java.io.IOExceptionWrite adoublefield, including tag, to the stream.- Throws:
java.io.IOException
-
writeFloat
public void writeFloat(int fieldNumber, float value) throws java.io.IOExceptionWrite afloatfield, including tag, to the stream.- Throws:
java.io.IOException
-
writeUInt64
public void writeUInt64(int fieldNumber, long value) throws java.io.IOExceptionWrite auint64field, including tag, to the stream.- Throws:
java.io.IOException
-
writeInt64
public void writeInt64(int fieldNumber, long value) throws java.io.IOExceptionWrite anint64field, including tag, to the stream.- Throws:
java.io.IOException
-
writeInt32
public void writeInt32(int fieldNumber, int value) throws java.io.IOExceptionWrite anint32field, including tag, to the stream.- Throws:
java.io.IOException
-
writeFixed64
public void writeFixed64(int fieldNumber, long value) throws java.io.IOExceptionWrite afixed64field, including tag, to the stream.- Throws:
java.io.IOException
-
writeFixed32
public void writeFixed32(int fieldNumber, int value) throws java.io.IOExceptionWrite afixed32field, including tag, to the stream.- Throws:
java.io.IOException
-
writeBool
public void writeBool(int fieldNumber, boolean value) throws java.io.IOExceptionWrite aboolfield, including tag, to the stream.- Throws:
java.io.IOException
-
writeString
public void writeString(int fieldNumber, java.lang.String value) throws java.io.IOExceptionWrite astringfield, including tag, to the stream.- Throws:
java.io.IOException
-
writeBytes
public void writeBytes(int fieldNumber, Buffer value) throws java.io.IOExceptionWrite abytesfield, including tag, to the stream.- Throws:
java.io.IOException
-
writeUInt32
public void writeUInt32(int fieldNumber, int value) throws java.io.IOExceptionWrite auint32field, including tag, to the stream.- Throws:
java.io.IOException
-
writeEnum
public void writeEnum(int fieldNumber, int value) throws java.io.IOExceptionWrite an enum field, including tag, to the stream. Caller is responsible for converting the enum value to its numeric value.- Throws:
java.io.IOException
-
writeSFixed32
public void writeSFixed32(int fieldNumber, int value) throws java.io.IOExceptionWrite ansfixed32field, including tag, to the stream.- Throws:
java.io.IOException
-
writeSFixed64
public void writeSFixed64(int fieldNumber, long value) throws java.io.IOExceptionWrite ansfixed64field, including tag, to the stream.- Throws:
java.io.IOException
-
writeSInt32
public void writeSInt32(int fieldNumber, int value) throws java.io.IOExceptionWrite ansint32field, including tag, to the stream.- Throws:
java.io.IOException
-
writeSInt64
public void writeSInt64(int fieldNumber, long value) throws java.io.IOExceptionWrite ansint64field, including tag, to the stream.- Throws:
java.io.IOException
-
computeDoubleSize
public static int computeDoubleSize(int fieldNumber, double value)Compute the number of bytes that would be needed to encode adoublefield, including tag.
-
computeFloatSize
public static int computeFloatSize(int fieldNumber, float value)Compute the number of bytes that would be needed to encode afloatfield, including tag.
-
computeUInt64Size
public static int computeUInt64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode auint64field, including tag.
-
computeInt64Size
public static int computeInt64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode anint64field, including tag.
-
computeInt32Size
public static int computeInt32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode anint32field, including tag.
-
computeFixed64Size
public static int computeFixed64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode afixed64field, including tag.
-
computeFixed32Size
public static int computeFixed32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode afixed32field, including tag.
-
computeBoolSize
public static int computeBoolSize(int fieldNumber, boolean value)Compute the number of bytes that would be needed to encode aboolfield, including tag.
-
computeStringSize
public static int computeStringSize(int fieldNumber, java.lang.String value)Compute the number of bytes that would be needed to encode astringfield, including tag.
-
computeBytesSize
public static int computeBytesSize(int fieldNumber, Buffer value)Compute the number of bytes that would be needed to encode abytesfield, including tag.
-
computeUInt32Size
public static int computeUInt32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode auint32field, including tag.
-
computeEnumSize
public static int computeEnumSize(int fieldNumber, int value)Compute the number of bytes that would be needed to encode an enum field, including tag. Caller is responsible for converting the enum value to its numeric value.
-
computeSFixed32Size
public static int computeSFixed32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode ansfixed32field, including tag.
-
computeSFixed64Size
public static int computeSFixed64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode ansfixed64field, including tag.
-
computeSInt32Size
public static int computeSInt32Size(int fieldNumber, int value)Compute the number of bytes that would be needed to encode ansint32field, including tag.
-
computeSInt64Size
public static int computeSInt64Size(int fieldNumber, long value)Compute the number of bytes that would be needed to encode ansint64field, including tag.
-
writeRawByte
public void writeRawByte(byte value) throws java.io.IOExceptionWrite a single byte.- Throws:
java.io.IOException
-
writeRawByte
public void writeRawByte(int value) throws java.io.IOExceptionWrite a single byte, represented by an integer value.- Throws:
java.io.IOException
-
writeRawBytes
public void writeRawBytes(byte[] value) throws java.io.IOExceptionWrite an array of bytes.- Throws:
java.io.IOException
-
writeRawBytes
public void writeRawBytes(byte[] value, int offset, int length) throws java.io.IOExceptionWrite part of an array of bytes.- Throws:
java.io.IOException
-
writeRawBytes
public void writeRawBytes(Buffer data) throws java.io.IOException
- Throws:
java.io.IOException
-
writeTag
public void writeTag(int fieldNumber, int wireType) throws java.io.IOExceptionEncode and write a tag.- Throws:
java.io.IOException
-
computeTagSize
public static int computeTagSize(int fieldNumber)
Compute the number of bytes that would be needed to encode a tag.
-
writeRawVarint32
public void writeRawVarint32(int value) throws java.io.IOExceptionEncode and write a varint.valueis treated as unsigned, so it won't be sign-extended if negative.- Throws:
java.io.IOException
-
computeRawVarint32Size
public static int computeRawVarint32Size(int value)
Compute the number of bytes that would be needed to encode a varint.valueis treated as unsigned, so it won't be sign-extended if negative.
-
writeRawVarint64
public void writeRawVarint64(long value) throws java.io.IOExceptionEncode and write a varint.- Throws:
java.io.IOException
-
computeRawVarint64Size
public static int computeRawVarint64Size(long value)
Compute the number of bytes that would be needed to encode a varint.
-
writeRawLittleEndian32
public void writeRawLittleEndian32(int value) throws java.io.IOExceptionWrite a little-endian 32-bit integer.- Throws:
java.io.IOException
-
writeRawLittleEndian64
public void writeRawLittleEndian64(long value) throws java.io.IOExceptionWrite a little-endian 64-bit integer.- Throws:
java.io.IOException
-
encodeZigZag32
public static int encodeZigZag32(int n)
Encode a ZigZag-encoded 32-bit value. ZigZag encodes signed integers into values that can be efficiently encoded with varint. (Otherwise, negative values must be sign-extended to 64 bits to be varint encoded, thus always taking 10 bytes on the wire.)- Parameters:
n- A signed 32-bit integer.- Returns:
- An unsigned 32-bit integer, stored in a signed int because Java has no explicit unsigned support.
-
encodeZigZag64
public static long encodeZigZag64(long n)
Encode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers into values that can be efficiently encoded with varint. (Otherwise, negative values must be sign-extended to 64 bits to be varint encoded, thus always taking 10 bytes on the wire.)- Parameters:
n- A signed 64-bit integer.- Returns:
- An unsigned 64-bit integer, stored in a signed int because Java has no explicit unsigned support.
-
checkNoSpaceLeft
public void checkNoSpaceLeft()
-
getNextBuffer
public Buffer getNextBuffer(int size) throws java.io.IOException
- Throws:
java.io.IOException
-
-