@@ -1403,27 +1403,63 @@ func (cmd *MapStringSliceInterfaceCmd) Val() map[string][]interface{} {
1403
1403
}
1404
1404
1405
1405
func (cmd * MapStringSliceInterfaceCmd ) readReply (rd * proto.Reader ) (err error ) {
1406
- n , err := rd .ReadMapLen ()
1406
+ readType , err := rd .PeekReplyType ()
1407
1407
if err != nil {
1408
1408
return err
1409
1409
}
1410
- cmd .val = make (map [string ][]interface {}, n )
1411
- for i := 0 ; i < n ; i ++ {
1412
- k , err := rd .ReadString ()
1410
+
1411
+ cmd .val = make (map [string ][]interface {})
1412
+
1413
+ if readType == proto .RespMap {
1414
+ n , err := rd .ReadMapLen ()
1413
1415
if err != nil {
1414
1416
return err
1415
1417
}
1416
- nn , err := rd .ReadArrayLen ()
1418
+ for i := 0 ; i < n ; i ++ {
1419
+ k , err := rd .ReadString ()
1420
+ if err != nil {
1421
+ return err
1422
+ }
1423
+ nn , err := rd .ReadArrayLen ()
1424
+ if err != nil {
1425
+ return err
1426
+ }
1427
+ cmd .val [k ] = make ([]interface {}, nn )
1428
+ for j := 0 ; j < nn ; j ++ {
1429
+ value , err := rd .ReadReply ()
1430
+ if err != nil {
1431
+ return err
1432
+ }
1433
+ cmd.val [k ][j ] = value
1434
+ }
1435
+ }
1436
+ } else if readType == proto .RespArray {
1437
+ // RESP2 response
1438
+ n , err := rd .ReadArrayLen ()
1417
1439
if err != nil {
1418
1440
return err
1419
1441
}
1420
- cmd .val [k ] = make ([]interface {}, nn )
1421
- for j := 0 ; j < nn ; j ++ {
1422
- value , err := rd .ReadReply ()
1442
+
1443
+ for i := 0 ; i < n ; i ++ {
1444
+ // Each entry in this array is itself an array with key details
1445
+ itemLen , err := rd .ReadArrayLen ()
1423
1446
if err != nil {
1424
1447
return err
1425
1448
}
1426
- cmd.val [k ][j ] = value
1449
+
1450
+ key , err := rd .ReadString ()
1451
+ if err != nil {
1452
+ return err
1453
+ }
1454
+ cmd .val [key ] = make ([]interface {}, 0 , itemLen - 1 )
1455
+ for j := 1 ; j < itemLen ; j ++ {
1456
+ // Read the inner array for timestamp-value pairs
1457
+ data , err := rd .ReadReply ()
1458
+ if err != nil {
1459
+ return err
1460
+ }
1461
+ cmd .val [key ] = append (cmd .val [key ], data )
1462
+ }
1427
1463
}
1428
1464
}
1429
1465
0 commit comments