Java Code Examples for com.google.protobuf.CodedInputStream#readInt32()

The following examples show how to use com.google.protobuf.CodedInputStream#readInt32() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Memoizer.java    From bazel with Apache License 2.0 6 votes vote down vote up
private <T> T deserializeMemoAfterContent(
    DeserializationContext context, ObjectCodec<T> codec, CodedInputStream codedIn)
    throws SerializationException, IOException {
  T value = castedDeserialize(context, codec, codedIn);
  int id = codedIn.readInt32();
  // If deserializing the children caused the parent object itself to be deserialized due to
  // a cycle, then there's now a memo entry for the parent. Reuse that object, discarding
  // the one we were trying to construct here, so as to avoid creating duplicate objects in
  // the object graph.
  Object cyclicallyCreatedObject = memo.lookup(id);
  if (cyclicallyCreatedObject != null) {
    return safeCast(cyclicallyCreatedObject, codec);
  } else {
    memo.memoize(id, value);
    return value;
  }
}
 
Example 2
Source File: ImmutableTableCodec.java    From bazel with Apache License 2.0 6 votes vote down vote up
@Override
public ImmutableTable<R, C, V> deserialize(
    DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  int length = codedIn.readInt32();
  if (length < 0) {
    throw new SerializationException("Expected non-negative length: " + length);
  }
  ImmutableTable.Builder<R, C, V> builder = ImmutableTable.builder();
  for (int i = 0; i < length; i++) {
    builder.put(
        /*rowKey=*/ context.deserialize(codedIn),
        /*columnKey=*/ context.deserialize(codedIn),
        /*value=*/ context.deserialize(codedIn));
  }
  return builder.build();
}
 
Example 3
Source File: MultimapCodec.java    From bazel with Apache License 2.0 6 votes vote down vote up
@Override
public ImmutableMultimap<K, V> deserialize(
    DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  ImmutableMultimap.Builder<K, V> result;
  if (codedIn.readBool()) {
    result = ImmutableListMultimap.builder();
  } else {
    result = ImmutableSetMultimap.builder();
  }
  int length = codedIn.readInt32();
  for (int i = 0; i < length; i++) {
    K key = context.deserialize(codedIn);
    Collection<V> values = context.deserialize(codedIn);
    result.putAll(key, values);
  }
  return result.build();
}
 
Example 4
Source File: MethodCodec.java    From bazel with Apache License 2.0 6 votes vote down vote up
@Override
public Method deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  Class<?> clazz = context.deserialize(codedIn);
  String name = context.deserialize(codedIn);

  Class<?>[] parameters = new Class<?>[codedIn.readInt32()];
  for (int i = 0; i < parameters.length; i++) {
    parameters[i] = context.deserialize(codedIn);
  }
  try {
    return clazz.getDeclaredMethod(name, parameters);
  } catch (NoSuchMethodException e) {
    throw new SerializationException(
        "Couldn't get method "
            + name
            + " in "
            + clazz
            + " with parameters "
            + Arrays.toString(parameters),
        e);
  }
}
 
Example 5
Source File: ImmutableBiMapCodec.java    From bazel with Apache License 2.0 6 votes vote down vote up
@Override
public ImmutableBiMap<K, V> deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {

  int length = codedIn.readInt32();
  if (length < 0) {
    throw new SerializationException("Expected non-negative length: " + length);
  }

  ImmutableBiMap.Builder<K, V> builder =
      ImmutableMapCodec.deserializeEntries(
          ImmutableBiMap.builderWithExpectedSize(length), length, context, codedIn);

  try {
    return builder.build();
  } catch (IllegalArgumentException e) {
    throw new SerializationException(
        "Duplicate keys during ImmutableBiMapCodec deserialization", e);
  }
}
 
Example 6
Source File: ImmutableSetRuntimeCodec.java    From bazel with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("unchecked") // Adding object to untyped builder.
@Override
public ImmutableSet deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  int size = codedIn.readInt32();
  ImmutableSet.Builder builder = ImmutableSet.builderWithExpectedSize(size);
  for (int i = 0; i < size; i++) {
    // Don't inline so builder knows this is an object, not an array.
    Object item = context.deserialize(codedIn);
    builder.add(item);
  }
  return builder.build();
}
 
Example 7
Source File: ImmutableListRuntimeCodec.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public ImmutableList deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws IOException, SerializationException {
  int size = codedIn.readInt32();
  Object[] list = new Object[size];
  for (int i = 0; i < size; ++i) {
    list[i] = context.deserialize(codedIn);
  }
  return ImmutableList.copyOf(list);
}
 
Example 8
Source File: NullableListCodec.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public List<T> deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  int length = codedIn.readInt32();
  if (length < 0) {
    throw new SerializationException("Expected non-negative length: " + length);
  }

  ArrayList<T> list = new ArrayList<>(length);
  for (int i = 0; i < length; i++) {
    list.add(context.deserialize(codedIn));
  }
  return maybeTransform(list);
}
 
Example 9
Source File: EnumMapCodec.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public EnumMap<E, V> deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  int size = codedIn.readInt32();
  Class<E> clazz = context.deserialize(codedIn);
  EnumMap<E, V> result = new EnumMap<>(clazz);
  E[] enums = clazz.getEnumConstants();
  for (int i = 0; i < size; i++) {
    int ordinal = codedIn.readInt32();
    V val = context.deserialize(codedIn);
    result.put(enums[ordinal], val);
  }
  return result;
}
 
Example 10
Source File: SerializationContextTest.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public ArrayList<?> deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  context = context.getMemoizingContext();
  int size = codedIn.readInt32();
  ArrayList<?> result = new ArrayList<>();
  for (int i = 0; i < size; i++) {
    result.add(context.deserialize(codedIn));
  }
  return result;
}
 
Example 11
Source File: HashMapCodec.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public LinkedHashMap<K, V> deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  int size = codedIn.readInt32();
  // Load factor is 0.75, so we need an initial capacity of 4/3 actual size to avoid rehashing.
  LinkedHashMap<K, V> result = new LinkedHashMap<>(4 * size / 3);
  for (int i = 0; i < size; i++) {
    result.put(context.deserialize(codedIn), context.deserialize(codedIn));
  }
  return result;
}
 
Example 12
Source File: ImmutableListCodec.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public ImmutableList<T> deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  int length = codedIn.readInt32();
  if (length < 0) {
    throw new SerializationException("Expected non-negative length: " + length);
  }

  ImmutableList.Builder<T> builder = ImmutableList.builder();
  for (int i = 0; i < length; i++) {
    builder.add(codec.deserialize(context, codedIn));
  }
  return builder.build();
}
 
Example 13
Source File: StringLiteral.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public StringLiteral deserialize(DeserializationContext context, CodedInputStream in)
    throws SerializationException, IOException {
  String value =
      context.deserializeWithAdHocMemoizationStrategy(in, MemoizationStrategy.MEMOIZE_AFTER);
  int startOffset = in.readInt32();
  int endOffset = in.readInt32();
  FileLocations locs = context.deserialize(in);
  return new StringLiteral(locs, startOffset, value, endOffset);
}
 
Example 14
Source File: SerializationContextTest.java    From bazel with Apache License 2.0 5 votes vote down vote up
@Override
public ImmutableList<Object> deserialize(
    DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  context = context.getMemoizingContext();
  int size = codedIn.readInt32();
  ImmutableList.Builder<Object> builder = ImmutableList.builder();
  for (int i = 0; i < size; i++) {
    builder.add(context.<Object>deserialize(codedIn));
  }
  return builder.build();
}
 
Example 15
Source File: ReplayLogTest.java    From unitime with Apache License 2.0 5 votes vote down vote up
private OnlineSectioningLog.ExportedLog readLog(CodedInputStream cin) throws IOException {
	if (cin.isAtEnd()) return null;
	int size = cin.readInt32();
	int limit = cin.pushLimit(size);
	OnlineSectioningLog.ExportedLog ret = OnlineSectioningLog.ExportedLog.parseFrom(cin);
	cin.popLimit(limit);
	cin.resetSizeCounter();
	return ret;
}
 
Example 16
Source File: State.java    From zetasketch with Apache License 2.0 5 votes vote down vote up
/**
 * Parses a {@link HyperLogLogPlusUniqueStateProto} message. Since the message is nested within an
 * {@link AggregatorStateProto}, we limit ourselves to reading only the bytes of the specified
 * message length.
 */
private void parseHll(CodedInputStream input, int size) throws IOException {
  int limit = input.getTotalBytesRead() + size;

  ByteBuffer buffer;
  UnknownFieldSet.Builder ignoredFields = UnknownFieldSet.newBuilder();
  while (input.getTotalBytesRead() < limit && !input.isAtEnd()) {
    int tag = input.readTag();
    switch (tag) {
      case SPARSE_SIZE_TAG:
        sparseSize = input.readInt32();
        break;
      case PRECISION_OR_NUM_BUCKETS_TAG:
        precision = input.readInt32();
        break;
      case SPARSE_PRECISION_OR_NUM_BUCKETS_TAG:
        sparsePrecision = input.readInt32();
        break;
      case DATA_TAG:
        buffer = input.readByteBuffer();
        data = ByteSlice.copyOnWrite(buffer);
        break;
      case SPARSE_DATA_TAG:
        buffer = input.readByteBuffer();
        sparseData = GrowingByteSlice.copyOnWrite(buffer);
        break;
      default:
        ignoredFields.mergeFieldFrom(tag, input);
    }
  }
}
 
Example 17
Source File: IntegerCodec.java    From bazel with Apache License 2.0 4 votes vote down vote up
@Override
public Integer deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws IOException {
  return codedIn.readInt32();
}
 
Example 18
Source File: CodedConstant.java    From jprotobuf with Apache License 2.0 4 votes vote down vote up
/**
 * Read a field of any primitive type for immutable messages from a CodedInputStream. Enums, groups, and embedded
 * messages are not handled by this method.
 *
 * @param input The stream from which to read.
 * @param type Declared type of the field.
 * @param checkUtf8 When true, check that the input is valid utf8.
 * @return An object representing the field's value, of the exact type which would be returned by
 *         {@link Message#getField(Descriptors.FieldDescriptor)} for this field.
 * @throws IOException Signals that an I/O exception has occurred.
 */
public static Object readPrimitiveField(CodedInputStream input, final WireFormat.FieldType type, boolean checkUtf8)
        throws IOException {
    switch (type) {
        case DOUBLE:
            return input.readDouble();
        case FLOAT:
            return input.readFloat();
        case INT64:
            return input.readInt64();
        case UINT64:
            return input.readUInt64();
        case INT32:
            return input.readInt32();
        case FIXED64:
            return input.readFixed64();
        case FIXED32:
            return input.readFixed32();
        case BOOL:
            return input.readBool();
        case STRING:
            if (checkUtf8) {
                return input.readStringRequireUtf8();
            } else {
                return input.readString();
            }
        case BYTES:
            return input.readByteArray();
        case UINT32:
            return input.readUInt32();
        case SFIXED32:
            return input.readSFixed32();
        case SFIXED64:
            return input.readSFixed64();
        case SINT32:
            return input.readSInt32();
        case SINT64:
            return input.readSInt64();

        case GROUP:
            throw new IllegalArgumentException("readPrimitiveField() cannot handle nested groups.");
        case MESSAGE:
            throw new IllegalArgumentException("readPrimitiveField() cannot handle embedded messages.");
        case ENUM:
            // We don't handle enums because we don't know what to do if the
            // value is not recognized.
            throw new IllegalArgumentException("readPrimitiveField() cannot handle enums.");
    }

    throw new RuntimeException("There is no way to get here, but the compiler thinks otherwise.");
}
 
Example 19
Source File: ObjectCodecsTest.java    From bazel with Apache License 2.0 4 votes vote down vote up
@Override
public Integer deserialize(DeserializationContext context, CodedInputStream codedIn)
    throws SerializationException, IOException {
  return codedIn.readInt32();
}
 
Example 20
Source File: TransactionUtil.java    From snowblossom with Apache License 2.0 4 votes vote down vote up
public static ArrayList<ByteString> extractWireFormatTxOut(Transaction tx)
  throws ValidationException
{
  try
  {
    CodedInputStream code_in = CodedInputStream.newInstance(tx.getInnerData().toByteArray());

    ArrayList<ByteString> lst = new ArrayList<>();

    while(true)
    {
      int tag = code_in.readTag();
      if (tag == 0) break;
      
      // The least signficiate 3 bits are the proto field type
      // so shift to get out field number, which is 5 for TranasctionOutput
      if (tag >> 3 == 5)
      {
        ByteArrayOutputStream b_out = new ByteArrayOutputStream();
        CodedOutputStream c_out = CodedOutputStream.newInstance(b_out);
        code_in.skipField(tag, c_out);
        c_out.flush();

        ByteString bs = ByteString.copyFrom(b_out.toByteArray());

        // So funny story...when you get an inner message like this as opposed to just serializing
        // the object, protobuf puts a tag and size on the coded input stream.  So we need to figure
        // out how many bytes that is an trim it off.
        CodedInputStream read_again = CodedInputStream.newInstance(bs.toByteArray());
        // Expected tag
        int tag2 = read_again.readTag();
        // Size of element
        int size = read_again.readInt32();

        // All we really care is how many bytes those two take.  For shorter messages
        // it will be 2, but could be higher if protobuf needs more bytes to encode the size
        int offset = read_again.getTotalBytesRead();

        bs = bs.substring(offset);
        lst.add(bs);
      }
      else
      {
        code_in.skipField(tag);
      }

    }
    return lst;
  }
  catch(java.io.IOException e)
  {
    throw new ValidationException(e);
  }
}