github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/eventcheck/parentlesscheck/parentless_check.go (about) 1 package parentlesscheck 2 3 import ( 4 "github.com/unicornultrafoundation/go-helios/native/dag" 5 ) 6 7 type Checker struct { 8 HeavyCheck HeavyCheck 9 LightCheck LightCheck 10 } 11 12 type LightCheck func(dag.Event) error 13 14 type HeavyCheck interface { 15 Enqueue(e dag.Event, checked func(error)) error 16 } 17 18 // Enqueue tries to fill gaps the fetcher's future import queue. 19 func (c *Checker) Enqueue(e dag.Event, checked func(error)) { 20 // Run light checks right away 21 err := c.LightCheck(e) 22 if err != nil { 23 checked(err) 24 return 25 } 26 27 // Run heavy check in parallel 28 _ = c.HeavyCheck.Enqueue(e, checked) 29 }