@Override public void writeUInt32(int fieldNumber, int value, boolean repeated) throws IOException { tail = sink.writeVarInt32( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); /* * tail = writeTagAndRawVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), value, this, tail); */ }
@Override public void writeByteRange(boolean utf8String, int fieldNumber, byte[] value, int offset, int length, boolean repeated) throws IOException { tail = sink.writeByteArray( value, offset, length, this, sink.writeVarInt32( length, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED), this, tail))); }
@Override public void writeSInt32(int fieldNumber, int value, boolean repeated) throws IOException { tail = sink.writeVarInt32( encodeZigZag32(value), this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); /* * tail = writeTagAndRawVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), encodeZigZag32(value), this, tail); */ }
@Override public void writeByteArray(int fieldNumber, byte[] bytes, boolean repeated) throws IOException { tail = sink.writeByteArray( bytes, 0, bytes.length, this, sink.writeVarInt32( bytes.length, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED), this, tail))); /* * tail = writeTagAndByteArray( makeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED), bytes, this, tail); */ }
@Override public <T> void writeObject(final int fieldNumber, final T value, final Schema<T> schema, final boolean repeated) throws IOException { tail = sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_START_GROUP), this, tail); schema.writeTo(this, value); tail = sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_END_GROUP), this, tail); }
@Override public void writeInt32(int fieldNumber, int value, boolean repeated) throws IOException { if (value < 0) { tail = sink.writeVarInt64( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); } else { tail = sink.writeVarInt32( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); } /* * if(value < 0) { tail = writeTagAndRawVarInt64( makeTag(fieldNumber, WIRETYPE_VARINT), value, this, tail); } * else { tail = writeTagAndRawVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), value, this, tail); } */ }
@Override public void writeDouble(int fieldNumber, double value, boolean repeated) throws IOException { tail = sink.writeInt64LE( Double.doubleToRawLongBits(value), this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_FIXED64), this, tail)); /* * tail = writeTagAndRawLittleEndian64( makeTag(fieldNumber, WIRETYPE_FIXED64), * Double.doubleToRawLongBits(value), this, tail); */ }
@Override public void writeFloat(int fieldNumber, float value, boolean repeated) throws IOException { tail = sink.writeInt32LE( Float.floatToRawIntBits(value), this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_FIXED32), this, tail)); /* * tail = writeTagAndRawLittleEndian32( makeTag(fieldNumber, WIRETYPE_FIXED32), Float.floatToRawIntBits(value), * this, tail); */ }
@Override public void writeFixed64(int fieldNumber, long value, boolean repeated) throws IOException { tail = sink.writeInt64LE( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_FIXED64), this, tail)); /* * tail = writeTagAndRawLittleEndian64( makeTag(fieldNumber, WIRETYPE_FIXED64), value, this, tail); */ }
@Override public void writeSFixed64(int fieldNumber, long value, boolean repeated) throws IOException { tail = sink.writeInt64LE( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_FIXED64), this, tail)); /* * tail = writeTagAndRawLittleEndian64( makeTag(fieldNumber, WIRETYPE_FIXED64), value, this, tail); */ }
@Override public void writeString(int fieldNumber, CharSequence value, boolean repeated) throws IOException { tail = sink.writeStrUTF8VarDelimited( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED), this, tail)); /* * tail = writeUTF8VarDelimited( value, this, writeRawVarInt32(makeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED), * this, tail)); */ }
@Override public void writeUInt64(int fieldNumber, long value, boolean repeated) throws IOException { tail = sink.writeVarInt64( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); /* * tail = writeTagAndRawVarInt64( makeTag(fieldNumber, WIRETYPE_VARINT), value, this, tail); */ }
@Override public void writeFixed32(int fieldNumber, int value, boolean repeated) throws IOException { tail = sink.writeInt32LE( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_FIXED32), this, tail)); /* * tail = writeTagAndRawLittleEndian32( makeTag(fieldNumber, WIRETYPE_FIXED32), value, this, tail); */ }
@Override public void writeSFixed32(int fieldNumber, int value, boolean repeated) throws IOException { tail = sink.writeInt32LE( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_FIXED32), this, tail)); /* * tail = writeTagAndRawLittleEndian32( makeTag(fieldNumber, WIRETYPE_FIXED32), value, this, tail); */ }
@Override public void writeInt64(int fieldNumber, long value, boolean repeated) throws IOException { tail = sink.writeVarInt64( value, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); /* * tail = writeTagAndRawVarInt64( makeTag(fieldNumber, WIRETYPE_VARINT), value, this, tail); */ }
@Override public void writeBool(int fieldNumber, boolean value, boolean repeated) throws IOException { tail = sink.writeByte( value ? (byte) 0x01 : 0x00, this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); /* * tail = writeTagAndRawVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), value ? 1 : 0, this, tail); */ }
@Override public <T> void writeObject(int fieldNumber, T value, Schema<T> schema, boolean repeated) throws IOException { final ProtostuffOutput output = this.output; if (references.shouldIncrement(refCount, value, output, fieldNumber)) { refCount++; output.tail = output.sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_START_GROUP), output, output.tail); schema.writeTo(this, value); output.tail = output.sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_END_GROUP), output, output.tail); } }
output.tail = output.sink.writeVarInt32( ((Integer) tab[i + 1]).intValue(), output, output.sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_REFERENCE), output,
@Override public void writeSInt64(int fieldNumber, long value, boolean repeated) throws IOException { tail = sink.writeVarInt64( encodeZigZag64(value), this, sink.writeVarInt32( makeTag(fieldNumber, WIRETYPE_VARINT), this, tail)); /* * tail = writeTagAndRawVarInt64( makeTag(fieldNumber, WIRETYPE_VARINT), encodeZigZag64(value), this, tail); */ }
/** * Serializes the {@code messages} (delimited) into an {@link OutputStream} using the given schema. * * @return the bytes written */ public static <T> int writeListTo(final OutputStream out, final List<T> messages, final Schema<T> schema, final LinkedBuffer buffer) throws IOException { if (buffer.start != buffer.offset) throw new IllegalArgumentException("Buffer previously used and had not been reset."); final int size = messages.size(); if (size == 0) return 0; final ProtostuffOutput output = new ProtostuffOutput(buffer, out); output.sink.writeVarInt32(size, output, buffer); for (T m : messages) { schema.writeTo(output, m); output.sink.writeByte((byte) WireFormat.WIRETYPE_TAIL_DELIMITER, output, buffer); } LinkedBuffer.writeTo(out, buffer); return output.size; }