in core/src/main/java/com/twitter/elephantbird/util/ThriftUtils.java [203:235]
private static void writeSingleFieldNoTag(TProtocol proto,
Field field,
Object value) throws TException {
switch(field.getType()) {
case TType.BOOL:
proto.writeBool((Boolean)value); break;
case TType.BYTE:
proto.writeByte((Byte)value); break;
case TType.I16:
proto.writeI16((Short)value); break;
case TType.I32:
proto.writeI32((Integer)value); break;
case TType.ENUM:
proto.writeI32(((TEnum)value).getValue()); break;
case TType.I64:
proto.writeI64((Long)value); break;
case TType.DOUBLE:
proto.writeDouble((Double)value); break;
case TType.STRING: {
if (value instanceof String) {
proto.writeString((String)value);
} else {
proto.writeBinary((ByteBuffer)value);
}
} break;
case TType.STRUCT:
((TBase<?, ?>)value).write(proto); break;
default:
throw new IllegalArgumentException("Unexpected type : " + field.getType());
}
}