many method

  1. @override
Future<Map<String, dynamic>> many(
  1. List<String> keys
)

Implementation

@override
Future<Map<String, dynamic>> many(List<String> keys) async {
  if (keys.isEmpty) return <String, dynamic>{};
  final grouped = <int, List<String>>{};
  for (final key in keys) {
    grouped.putIfAbsent(_shardFor(key), () => <String>[]).add(key);
  }

  final result = <String, dynamic>{};
  for (final entry in grouped.entries) {
    final response = await _requestOnShard(
      entry.key,
      'many',
      payload: <String, Object?>{'keys': entry.value},
    );
    final values = response['values'];
    if (values is Map) {
      for (final value in values.entries) {
        if (value.key is String) {
          result[value.key as String] = value.value;
        }
      }
    }
  }
  return result;
}