Hscan.fromResult constructor

Hscan.fromResult(
  1. Object result
)

fromResult

Implementation

factory Hscan.fromResult(Object result) {
  int _cursor = 0;
  Map<String, String> _keys = {};

  if (result is RespType2<dynamic>) {
    final result1 = result.toArray().payload;
    if (result1 != null && result1.length == 2) {
      final element1 = result1[0] as RespBulkString2;
      final payload1 = element1.payload;
      if (payload1 != null) {
        _cursor = int.parse(payload1);
      }
      final element2 = result1[1] as RespArray2;
      final payload2 = element2.payload;
      if (payload2 != null) {
        // 将原来处理列表的逻辑改为处理映射
        for (var i = 0; i < payload2.length; i += 2) {
          var keyItem = payload2[i] as RespBulkString2;
          var valueItem = payload2[i + 1] as RespBulkString2;
          if (keyItem.payload != null && valueItem.payload != null) {
            _keys[keyItem.payload!] = valueItem.payload!;
          }
        }
      }
    }

    return Hscan(
      cursor: _cursor,
      keys: _keys,
    );
  }

  final result1 = (result as RespType3).toArray().payload;
  if (result1 != null && result1.length == 2) {
    final element1 = result1[0] as RespBulkString2;
    final payload1 = element1.payload;
    if (payload1 != null) {
      _cursor = int.parse(payload1);
    }
    final element2 = result1[1] as RespArray2;
    final payload2 = element2.payload;
    if (payload2 != null) {
      // 将原来处理列表的逻辑改为处理映射
      for (var i = 0; i < payload2.length; i += 2) {
        var keyItem = payload2[i] as RespBulkString2;
        var valueItem = payload2[i + 1] as RespBulkString2;
        if (keyItem.payload != null && valueItem.payload != null) {
          _keys[keyItem.payload!] = valueItem.payload!;
        }
      }
    }
  }

  return Hscan(
    cursor: _cursor,
    keys: _keys,
  );
}