Package org.apache.activemq.protobuf
Class CodedOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.apache.activemq.protobuf.CodedOutputStream
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
Encodes 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)
and
writeInt32(int, int)
) and methods that write low-level values (e.g.
writeRawVarint32(int)
and writeRawBytes(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.
- Author:
- kneton@google.com Kenton Varda
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
Fields inherited from class java.io.FilterOutputStream
out
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
static int
computeBoolSize
(int fieldNumber, boolean value) Compute the number of bytes that would be needed to encode abool
field, including tag.static int
computeBytesSize
(int fieldNumber, Buffer value) Compute the number of bytes that would be needed to encode abytes
field, including tag.static int
computeDoubleSize
(int fieldNumber, double value) Compute the number of bytes that would be needed to encode adouble
field, including tag.static int
computeEnumSize
(int fieldNumber, int value) Compute the number of bytes that would be needed to encode an enum field, including tag.static int
computeFixed32Size
(int fieldNumber, int value) Compute the number of bytes that would be needed to encode afixed32
field, including tag.static int
computeFixed64Size
(int fieldNumber, long value) Compute the number of bytes that would be needed to encode afixed64
field, including tag.static int
computeFloatSize
(int fieldNumber, float value) Compute the number of bytes that would be needed to encode afloat
field, including tag.static int
computeInt32Size
(int fieldNumber, int value) Compute the number of bytes that would be needed to encode anint32
field, including tag.static int
computeInt64Size
(int fieldNumber, long value) Compute the number of bytes that would be needed to encode anint64
field, including tag.static int
computeRawVarint32Size
(int value) Compute the number of bytes that would be needed to encode a varint.static int
computeRawVarint64Size
(long value) Compute the number of bytes that would be needed to encode a varint.static int
computeSFixed32Size
(int fieldNumber, int value) Compute the number of bytes that would be needed to encode ansfixed32
field, including tag.static int
computeSFixed64Size
(int fieldNumber, long value) Compute the number of bytes that would be needed to encode ansfixed64
field, including tag.static int
computeSInt32Size
(int fieldNumber, int value) Compute the number of bytes that would be needed to encode ansint32
field, including tag.static int
computeSInt64Size
(int fieldNumber, long value) Compute the number of bytes that would be needed to encode ansint64
field, including tag.static int
computeStringSize
(int fieldNumber, String value) Compute the number of bytes that would be needed to encode astring
field, including tag.static int
computeTagSize
(int fieldNumber) Compute the number of bytes that would be needed to encode a tag.static int
computeUInt32Size
(int fieldNumber, int value) Compute the number of bytes that would be needed to encode auint32
field, including tag.static int
computeUInt64Size
(int fieldNumber, long value) Compute the number of bytes that would be needed to encode auint64
field, including tag.static int
encodeZigZag32
(int n) Encode a ZigZag-encoded 32-bit value.static long
encodeZigZag64
(long n) Encode a ZigZag-encoded 64-bit value.getNextBuffer
(int size) void
writeBool
(int fieldNumber, boolean value) Write abool
field, including tag, to the stream.void
writeBytes
(int fieldNumber, Buffer value) Write abytes
field, including tag, to the stream.void
writeDouble
(int fieldNumber, double value) Write adouble
field, including tag, to the stream.void
writeEnum
(int fieldNumber, int value) Write an enum field, including tag, to the stream.void
writeFixed32
(int fieldNumber, int value) Write afixed32
field, including tag, to the stream.void
writeFixed64
(int fieldNumber, long value) Write afixed64
field, including tag, to the stream.void
writeFloat
(int fieldNumber, float value) Write afloat
field, including tag, to the stream.void
writeInt32
(int fieldNumber, int value) Write anint32
field, including tag, to the stream.void
writeInt64
(int fieldNumber, long value) Write anint64
field, including tag, to the stream.void
writeRawByte
(byte value) Write a single byte.void
writeRawByte
(int value) Write a single byte, represented by an integer value.void
writeRawBytes
(byte[] value) Write an array of bytes.void
writeRawBytes
(byte[] value, int offset, int length) Write part of an array of bytes.void
writeRawBytes
(Buffer data) void
writeRawLittleEndian32
(int value) Write a little-endian 32-bit integer.void
writeRawLittleEndian64
(long value) Write a little-endian 64-bit integer.void
writeRawVarint32
(int value) Encode and write a varint.void
writeRawVarint64
(long value) Encode and write a varint.void
writeSFixed32
(int fieldNumber, int value) Write ansfixed32
field, including tag, to the stream.void
writeSFixed64
(int fieldNumber, long value) Write ansfixed64
field, including tag, to the stream.void
writeSInt32
(int fieldNumber, int value) Write ansint32
field, including tag, to the stream.void
writeSInt64
(int fieldNumber, long value) Write ansint64
field, including tag, to the stream.void
writeString
(int fieldNumber, String value) Write astring
field, including tag, to the stream.void
writeTag
(int fieldNumber, int wireType) Encode and write a tag.void
writeUInt32
(int fieldNumber, int value) Write auint32
field, including tag, to the stream.void
writeUInt64
(int fieldNumber, long value) Write auint64
field, including tag, to the stream.Methods inherited from class java.io.OutputStream
nullOutputStream
-
Field Details
-
LITTLE_ENDIAN_32_SIZE
public static final int LITTLE_ENDIAN_32_SIZE- See Also:
-
LITTLE_ENDIAN_64_SIZE
public static final int LITTLE_ENDIAN_64_SIZE- See Also:
-
-
Constructor Details
-
CodedOutputStream
-
CodedOutputStream
public CodedOutputStream(byte[] data) -
CodedOutputStream
-
-
Method Details
-
writeDouble
Write adouble
field, including tag, to the stream.- Throws:
IOException
-
writeFloat
Write afloat
field, including tag, to the stream.- Throws:
IOException
-
writeUInt64
Write auint64
field, including tag, to the stream.- Throws:
IOException
-
writeInt64
Write anint64
field, including tag, to the stream.- Throws:
IOException
-
writeInt32
Write anint32
field, including tag, to the stream.- Throws:
IOException
-
writeFixed64
Write afixed64
field, including tag, to the stream.- Throws:
IOException
-
writeFixed32
Write afixed32
field, including tag, to the stream.- Throws:
IOException
-
writeBool
Write abool
field, including tag, to the stream.- Throws:
IOException
-
writeString
Write astring
field, including tag, to the stream.- Throws:
IOException
-
writeBytes
Write abytes
field, including tag, to the stream.- Throws:
IOException
-
writeUInt32
Write auint32
field, including tag, to the stream.- Throws:
IOException
-
writeEnum
Write an enum field, including tag, to the stream. Caller is responsible for converting the enum value to its numeric value.- Throws:
IOException
-
writeSFixed32
Write ansfixed32
field, including tag, to the stream.- Throws:
IOException
-
writeSFixed64
Write ansfixed64
field, including tag, to the stream.- Throws:
IOException
-
writeSInt32
Write ansint32
field, including tag, to the stream.- Throws:
IOException
-
writeSInt64
Write ansint64
field, including tag, to the stream.- Throws:
IOException
-
computeDoubleSize
public static int computeDoubleSize(int fieldNumber, double value) Compute the number of bytes that would be needed to encode adouble
field, including tag. -
computeFloatSize
public static int computeFloatSize(int fieldNumber, float value) Compute the number of bytes that would be needed to encode afloat
field, including tag. -
computeUInt64Size
public static int computeUInt64Size(int fieldNumber, long value) Compute the number of bytes that would be needed to encode auint64
field, including tag. -
computeInt64Size
public static int computeInt64Size(int fieldNumber, long value) Compute the number of bytes that would be needed to encode anint64
field, including tag. -
computeInt32Size
public static int computeInt32Size(int fieldNumber, int value) Compute the number of bytes that would be needed to encode anint32
field, including tag. -
computeFixed64Size
public static int computeFixed64Size(int fieldNumber, long value) Compute the number of bytes that would be needed to encode afixed64
field, including tag. -
computeFixed32Size
public static int computeFixed32Size(int fieldNumber, int value) Compute the number of bytes that would be needed to encode afixed32
field, including tag. -
computeBoolSize
public static int computeBoolSize(int fieldNumber, boolean value) Compute the number of bytes that would be needed to encode abool
field, including tag. -
computeStringSize
Compute the number of bytes that would be needed to encode astring
field, including tag. -
computeBytesSize
Compute the number of bytes that would be needed to encode abytes
field, including tag. -
computeUInt32Size
public static int computeUInt32Size(int fieldNumber, int value) Compute the number of bytes that would be needed to encode auint32
field, 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 ansfixed32
field, including tag. -
computeSFixed64Size
public static int computeSFixed64Size(int fieldNumber, long value) Compute the number of bytes that would be needed to encode ansfixed64
field, including tag. -
computeSInt32Size
public static int computeSInt32Size(int fieldNumber, int value) Compute the number of bytes that would be needed to encode ansint32
field, including tag. -
computeSInt64Size
public static int computeSInt64Size(int fieldNumber, long value) Compute the number of bytes that would be needed to encode ansint64
field, including tag. -
writeRawByte
Write a single byte.- Throws:
IOException
-
writeRawByte
Write a single byte, represented by an integer value.- Throws:
IOException
-
writeRawBytes
Write an array of bytes.- Throws:
IOException
-
writeRawBytes
Write part of an array of bytes.- Throws:
IOException
-
writeRawBytes
- Throws:
IOException
-
writeTag
Encode and write a tag.- Throws:
IOException
-
computeTagSize
public static int computeTagSize(int fieldNumber) Compute the number of bytes that would be needed to encode a tag. -
writeRawVarint32
Encode and write a varint.value
is treated as unsigned, so it won't be sign-extended if negative.- Throws:
IOException
-
computeRawVarint32Size
public static int computeRawVarint32Size(int value) Compute the number of bytes that would be needed to encode a varint.value
is treated as unsigned, so it won't be sign-extended if negative. -
writeRawVarint64
Encode and write a varint.- Throws:
IOException
-
computeRawVarint64Size
public static int computeRawVarint64Size(long value) Compute the number of bytes that would be needed to encode a varint. -
writeRawLittleEndian32
Write a little-endian 32-bit integer.- Throws:
IOException
-
writeRawLittleEndian64
Write a little-endian 64-bit integer.- Throws:
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
- Throws:
IOException
-