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  }