github.com/crowdsecurity/crowdsec@v1.6.1/pkg/leakybucket/processor.go (about)

     1  package leakybucket
     2  
     3  import "github.com/crowdsecurity/crowdsec/pkg/types"
     4  
     5  type Processor interface {
     6  	OnBucketInit(Bucket *BucketFactory) error
     7  	OnBucketPour(Bucket *BucketFactory) func(types.Event, *Leaky) *types.Event
     8  	OnBucketOverflow(Bucket *BucketFactory) func(*Leaky, types.RuntimeAlert, *types.Queue) (types.RuntimeAlert, *types.Queue)
     9  
    10  	AfterBucketPour(Bucket *BucketFactory) func(types.Event, *Leaky) *types.Event
    11  }
    12  
    13  type DumbProcessor struct {
    14  }
    15  
    16  func (d *DumbProcessor) OnBucketInit(bucketFactory *BucketFactory) error {
    17  	return nil
    18  }
    19  
    20  func (d *DumbProcessor) OnBucketPour(bucketFactory *BucketFactory) func(types.Event, *Leaky) *types.Event {
    21  	return func(msg types.Event, leaky *Leaky) *types.Event {
    22  		return &msg
    23  	}
    24  }
    25  
    26  func (d *DumbProcessor) OnBucketOverflow(b *BucketFactory) func(*Leaky, types.RuntimeAlert, *types.Queue) (types.RuntimeAlert, *types.Queue) {
    27  	return func(leaky *Leaky, alert types.RuntimeAlert, queue *types.Queue) (types.RuntimeAlert, *types.Queue) {
    28  		return alert, queue
    29  	}
    30  }
    31  
    32  func (d *DumbProcessor) AfterBucketPour(bucketFactory *BucketFactory) func(types.Event, *Leaky) *types.Event {
    33  	return func(msg types.Event, leaky *Leaky) *types.Event {
    34  		return &msg
    35  	}
    36  }