refactor: remove state API example
This commit is contained in:
parent
95a9dc9db0
commit
728afc0587
@ -1,57 +0,0 @@
|
||||
package state
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/filecoin-project/lotus/chain/store"
|
||||
"github.com/filecoin-project/specs-actors/actors/abi"
|
||||
|
||||
"github.com/filecoin-project/lotus/api"
|
||||
"github.com/filecoin-project/lotus/chain/types"
|
||||
)
|
||||
|
||||
type StateWatcher struct {
|
||||
}
|
||||
|
||||
type WatcherAPI interface {
|
||||
ChainNotify(context.Context) (<-chan []*api.HeadChange, error)
|
||||
}
|
||||
|
||||
type UserData interface{}
|
||||
|
||||
type DiffFunc func(ctx context.Context, oldState, newState *types.TipSet) (changed bool, user UserData, err error)
|
||||
|
||||
type Callback func(ctx context.Context, oldState, newState *types.TipSet, events interface{})
|
||||
|
||||
type RevertHandler func(ctx context.Context, ts *types.TipSet) error
|
||||
|
||||
/*
|
||||
w := NewWatcher(api, OnActorChange(t04, OnDealStateChange(123)), cb)
|
||||
*/
|
||||
func NewWatcher(ctx context.Context, api WatcherAPI, d DiffFunc, apply Callback, revert RevertHandler, confidence, timeout abi.ChainEpoch) {
|
||||
go func() {
|
||||
notifs, err := api.ChainNotify(ctx)
|
||||
if err != nil {
|
||||
// bad
|
||||
return
|
||||
}
|
||||
|
||||
curTs := (<-notifs)[0].Val
|
||||
d(ctx, curTs, curTs)
|
||||
|
||||
for {
|
||||
select {
|
||||
case update := <-notifs:
|
||||
for i, change := range update {
|
||||
switch change.Type {
|
||||
case store.HCApply:
|
||||
d(ctx, curTs, change.Val)
|
||||
case store.HCRevert:
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}()
|
||||
}
|
Loading…
Reference in New Issue
Block a user