public final class ProtoWriter

  1. Object
  2. 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):

CodeNameUsed for
0VARINTint32, int64, uint32, uint64, sint*, bool, enum
1I64fixed64, sfixed64, double
2LENstring, bytes, embedded messages, packed repeated
5I32fixed32, 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

public OutputStream stream()Backing stream so generated codecs can stage a sub-message into a ByteArrayOutputStream and length-prefix the result.
public void writeTag(int fieldNumber, int wireType) throws IOException
public void writeVarint32(int value) throws IOException
public void writeVarint64(long value) throws IOException
public void writeFixed32(int value) throws IOException
public void writeFixed64(long value) throws IOException
public static int zigZag32(int n)
public static long zigZag64(long n)
public void writeInt32(int field, int value) throws IOException
public void writeInt64(int field, long value) throws IOException
public void writeUInt32(int field, int value) throws IOException
public void writeUInt64(int field, long value) throws IOException
public void writeSInt32(int field, int value) throws IOException
public void writeSInt64(int field, long value) throws IOException
public void writeFixed32Field(int field, int value) throws IOException
public void writeFixed64Field(int field, long value) throws IOException
public void writeBool(int field, boolean value) throws IOException
public void writeFloat(int field, float value) throws IOException
public void writeDouble(int field, double value) throws IOException
public void writeString(int field, String value) throws IOException
public void writeBytes(int field, byte[] value) throws IOException
public <T> void writeMessage(int field, T value, ProtoCodec<T> codec) throws IOExceptionWrites a nested @ProtoMessage value as a length-delimited field.
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).
public void writeStringList(int field, List<String> values) throws IOExceptionWrites a repeated field of strings (one tag + length prefix per element).
public void writePackedInt32(int field, List<Integer> values) throws IOExceptionWrites a packed repeated int32 field (proto3 default packing for scalar lists).
public void writePackedInt64(int field, List<Long> values) throws IOExceptionWrites a packed repeated int64 field.

Inherited methods

Field details

WIRE_VARINT

public static final int WIRE_VARINT = 0

WIRE_I64

public static final int WIRE_I64 = 1

WIRE_LEN

public static final int WIRE_LEN = 2

WIRE_I32

public static final int WIRE_I32 = 5

Constructor 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 IOException

writeVarint32

public void writeVarint32(int value) throws IOException

writeVarint64

public void writeVarint64(long value) throws IOException

writeFixed32

public void writeFixed32(int value) throws IOException

writeFixed64

public void writeFixed64(long value) throws IOException

zigZag32

public static int zigZag32(int n)

zigZag64

public static long zigZag64(long n)

writeInt32

public void writeInt32(int field, int value) throws IOException

writeInt64

public void writeInt64(int field, long value) throws IOException

writeUInt32

public void writeUInt32(int field, int value) throws IOException

writeUInt64

public void writeUInt64(int field, long value) throws IOException

writeSInt32

public void writeSInt32(int field, int value) throws IOException

writeSInt64

public void writeSInt64(int field, long value) throws IOException

writeFixed32Field

public void writeFixed32Field(int field, int value) throws IOException

writeFixed64Field

public void writeFixed64Field(int field, long value) throws IOException

writeBool

public void writeBool(int field, boolean value) throws IOException

writeFloat

public void writeFloat(int field, float value) throws IOException

writeDouble

public void writeDouble(int field, double value) throws IOException

writeString

public void writeString(int field, String value) throws IOException

writeBytes

public void writeBytes(int field, byte[] value) throws IOException

writeMessage

public <T> void writeMessage(int field, T value, ProtoCodec<T> codec) throws IOException
Writes a nested @ProtoMessage value as a length-delimited field. Generated codecs call into ProtoCodecs.lookup(Class) to find the nested codec.

writeMessageList

public <T> void writeMessageList(int field, List<T> values, ProtoCodec<T> codec) throws IOException
Writes a repeated field of nested messages (one tag + length prefix per element – proto3 doesn’t pack length-delimited repeated entries).

writeStringList

public void writeStringList(int field, List<String> values) throws IOException
Writes a repeated field of strings (one tag + length prefix per element).

writePackedInt32

public void writePackedInt32(int field, List<Integer> values) throws IOException
Writes a packed repeated int32 field (proto3 default packing for scalar lists).

writePackedInt64

public void writePackedInt64(int field, List<Long> values) throws IOException
Writes a packed repeated int64 field.