getObjects method

  1. @override
Future<List<ObjectResult>> getObjects(
  1. List<String> ids, {
  2. ObjectIncludeOptions? include,
})
override

Batched object reads: one entry per input id, in the same order.

Implementation

@override
Future<List<ObjectResult>> getObjects(
  List<String> ids, {
  ObjectIncludeOptions? include,
}) async {
  final readMask = _objectReadMask(include);
  final chunks = chunk(ids, _MAX_OBJECTS_PER_BATCH);

  final results = <GetObjectResult>[];
  for (final c in chunks) {
    final response = await _client.ledgerService.batchGetObjects(
      BatchGetObjectsRequest(
        requests: c.map((id) => GetObjectRequest(objectId: id)),
        readMask: readMask,
      ),
    );
    results.addAll(response.objects);
  }

  return [
    for (var i = 0; i < results.length; i++)
      if (results[i].whichResult() == GetObjectResult_Result.error)
        _objectError(results[i].error, i < ids.length ? ids[i] : null)
      else
        ObjectSuccess(_parseObject(results[i].object, include)),
  ];
}