public final class ProtoWriter
- Object
- ProtoWriter
Low-level protobuf wire-format writer used by generated
ProtoCodec implementations. Provides per-scalar-type field
emitters that skip default values (proto3 default-omission
behaviour) so the byte sequence matches what protoc-generated
code would emit for the same input.
Wire types (3-bit tag suffix):
| Code | Name | Used for |
|---|---|---|
| 0 | VARINT | int32, int64, uint32, uint64, sint*, bool, enum |
| 1 | I64 | fixed64, sfixed64, double |
| 2 | LEN | string, bytes, embedded messages, packed repeated |
| 5 | I32 | fixed32, sfixed32, float |
Fields
public static final int WIRE_VARINT = 0 | |
public static final int WIRE_I64 = 1 | |
public static final int WIRE_LEN = 2 | |
public static final int WIRE_I32 = 5 |
Constructors
public ProtoWriter(OutputStream out) |
Methods
Inherited methods
Field details
WIRE_VARINT
public static final int WIRE_VARINT = 0WIRE_I64
public static final int WIRE_I64 = 1WIRE_LEN
public static final int WIRE_LEN = 2WIRE_I32
public static final int WIRE_I32 = 5Constructor details
ProtoWriter
public ProtoWriter(OutputStream out)Method details
stream
public OutputStream stream()Backing stream so generated codecs can stage a sub-message
into a
ByteArrayOutputStream and length-prefix the result.writeTag
public void writeTag(int fieldNumber, int wireType)
throws IOExceptionThrows
writeVarint32
public void writeVarint32(int value)
throws IOExceptionThrows
writeVarint64
public void writeVarint64(long value)
throws IOExceptionThrows
writeFixed32
public void writeFixed32(int value)
throws IOExceptionThrows
writeFixed64
public void writeFixed64(long value)
throws IOExceptionThrows
zigZag32
public static int zigZag32(int n)zigZag64
public static long zigZag64(long n)writeInt32
public void writeInt32(int field, int value)
throws IOExceptionThrows
writeInt64
public void writeInt64(int field, long value)
throws IOExceptionThrows
writeUInt32
public void writeUInt32(int field, int value)
throws IOExceptionThrows
writeUInt64
public void writeUInt64(int field, long value)
throws IOExceptionThrows
writeSInt32
public void writeSInt32(int field, int value)
throws IOExceptionThrows
writeSInt64
public void writeSInt64(int field, long value)
throws IOExceptionThrows
writeFixed32Field
public void writeFixed32Field(int field, int value)
throws IOExceptionThrows
writeFixed64Field
public void writeFixed64Field(int field, long value)
throws IOExceptionThrows
writeBool
public void writeBool(int field, boolean value)
throws IOExceptionThrows
writeFloat
public void writeFloat(int field, float value)
throws IOExceptionThrows
writeDouble
public void writeDouble(int field, double value)
throws IOExceptionThrows
writeString
public void writeString(int field, String value)
throws IOExceptionThrows
writeBytes
public void writeBytes(int field, byte[] value)
throws IOExceptionThrows
writeMessage
public <T> void writeMessage(int field, T value, ProtoCodec<T> codec)
throws IOExceptionWrites a nested
@ProtoMessage value as a length-delimited
field. Generated codecs call into ProtoCodecs.lookup(Class)
to find the nested codec.Throws
writeMessageList
public <T> void writeMessageList(int field, List<T> values, ProtoCodec<T> codec)
throws IOExceptionWrites a
repeated field of nested messages (one tag + length
prefix per element – proto3 doesn’t pack length-delimited
repeated entries).Throws
writeStringList
public void writeStringList(int field, List<String> values)
throws IOExceptionWrites a
repeated field of strings (one tag + length prefix
per element).Throws
writePackedInt32
public void writePackedInt32(int field, List<Integer> values)
throws IOExceptionWrites a packed
repeated int32 field (proto3 default packing
for scalar lists).Throws
writePackedInt64
public void writePackedInt64(int field, List<Long> values)
throws IOExceptionWrites a packed
repeated int64 field.