Class ProtoWriter

java.lang.Object
com.codename1.io.grpc.ProtoWriter

public final class ProtoWriter extends java.lang.Object

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
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
    static final int
     
    static final int
     
    static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    ProtoWriter(java.io.OutputStream out)
     
  • Method Summary

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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ProtoWriter

      public ProtoWriter(java.io.OutputStream out)
  • Method Details

    • stream

      public java.io.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 java.io.IOException
      Throws:
      java.io.IOException
    • writeVarint32

      public void writeVarint32(int value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeVarint64

      public void writeVarint64(long value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeFixed32

      public void writeFixed32(int value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeFixed64

      public void writeFixed64(long value) throws java.io.IOException
      Throws:
      java.io.IOException
    • zigZag32

      public static int zigZag32(int n)
    • zigZag64

      public static long zigZag64(long n)
    • writeInt32

      public void writeInt32(int field, int value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeInt64

      public void writeInt64(int field, long value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeUInt32

      public void writeUInt32(int field, int value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeUInt64

      public void writeUInt64(int field, long value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeSInt32

      public void writeSInt32(int field, int value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeSInt64

      public void writeSInt64(int field, long value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeFixed32Field

      public void writeFixed32Field(int field, int value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeFixed64Field

      public void writeFixed64Field(int field, long value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeBool

      public void writeBool(int field, boolean value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeFloat

      public void writeFloat(int field, float value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeDouble

      public void writeDouble(int field, double value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeString

      public void writeString(int field, String value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeBytes

      public void writeBytes(int field, byte[] value) throws java.io.IOException
      Throws:
      java.io.IOException
    • writeMessage

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

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

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

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

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