KeyspaceInfo.fromMap constructor

KeyspaceInfo.fromMap(
  1. Map<String, String> map
)

Implementation

factory KeyspaceInfo.fromMap(Map<String, String> map) {
  final dbMap = <int, DBInfo>{};

  var defaultDBInfo = DBInfo(keys: 0, expires: 0, avgTtl: 0); // 假设的默认DBInfo值

  // 初始化一个变量来存储最大索引值
  int maxIndex = 0;

  // 首先遍历map以确定最大索引
  map.forEach((key, value) {
    if (key.startsWith('db')) {
      final index = int.parse(key.substring(2)); // 从 "db" 后提取索引
      maxIndex = index > maxIndex ? index : maxIndex; // 更新maxIndex为最大值
      dbMap[index] = DBInfo.fromString(value); // 此时暂时存儲到dbMap中
    }
  });

  // 创建列表并使用默认DBInfo对象初始化
  final List<DBInfo> databases =
      List.generate(maxIndex + 1, (index) => defaultDBInfo);

  // 填充真实的DBInfo对象到相应的索引位置
  dbMap.forEach((index, dbInfo) {
    databases[index] = dbInfo;
  });

  return KeyspaceInfo(databases: databases);
}