bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/pkg/leakybucket/processor.go (about)

     1  package leakybucket
     2  
     3  import "bitbucket.org/Aishee/synsec/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, *Queue) (types.RuntimeAlert, *Queue)
     9  }
    10  
    11  type DumbProcessor struct {
    12  }
    13  
    14  func (d *DumbProcessor) OnBucketInit(bucketFactory *BucketFactory) error {
    15  	return nil
    16  }
    17  
    18  func (d *DumbProcessor) OnBucketPour(bucketFactory *BucketFactory) func(types.Event, *Leaky) *types.Event {
    19  	return func(msg types.Event, leaky *Leaky) *types.Event {
    20  		return &msg
    21  	}
    22  }
    23  
    24  func (d *DumbProcessor) OnBucketOverflow(b *BucketFactory) func(*Leaky, types.RuntimeAlert, *Queue) (types.RuntimeAlert, *Queue) {
    25  	return func(leaky *Leaky, alert types.RuntimeAlert, queue *Queue) (types.RuntimeAlert, *Queue) {
    26  		return alert, queue
    27  	}
    28  
    29  }