incremental output for list-messages

This commit is contained in:
whyrusleeping 2020-10-15 09:38:27 -07:00
parent a931ff94e9
commit 5bee85d57a

View File

@ -837,14 +837,35 @@ var stateListMessagesCmd = &cli.Command{
froma = a froma = a
} }
toh := cctx.Uint64("toheight") toh := abi.ChainEpoch(cctx.Uint64("toheight"))
ts, err := LoadTipSet(ctx, cctx, api) ts, err := LoadTipSet(ctx, cctx, api)
if err != nil { if err != nil {
return err return err
} }
msgs, err := api.StateListMessages(ctx, &lapi.MessageMatch{To: toa, From: froma}, ts.Key(), abi.ChainEpoch(toh)) if ts == nil {
head, err := api.ChainHead(ctx)
if err != nil {
return err
}
ts = head
}
windowSize := abi.ChainEpoch(100)
cur := ts
for cur.Height() > toh {
if ctx.Err() != nil {
return ctx.Err()
}
end := toh
if cur.Height()-windowSize > end {
end = cur.Height() - windowSize
}
msgs, err := api.StateListMessages(ctx, &lapi.MessageMatch{To: toa, From: froma}, cur.Key(), end)
if err != nil { if err != nil {
return err return err
} }
@ -866,6 +887,18 @@ var stateListMessagesCmd = &cli.Command{
fmt.Println(string(b)) fmt.Println(string(b))
} }
if end <= 0 {
break
}
next, err := api.ChainGetTipSetByHeight(ctx, end-1, cur.Key())
if err != nil {
return err
}
cur = next
}
return nil return nil
}, },
} }