api/pkg/audit/sink/generic_sink.go

34 lines
635 B
Go
Raw Normal View History

package sink
import (
"gitlab.com/inetmock/inetmock/pkg/audit"
)
func NewNoOpSink(name string) audit.Sink {
return NewGenericSink(name, func(_ audit.Event) {})
}
func NewGenericSink(name string, consumer func(ev audit.Event)) audit.Sink {
return &genericSink{
name: name,
consumer: consumer,
}
}
type genericSink struct {
name string
consumer func(ev audit.Event)
}
func (g genericSink) Name() string {
return g.name
}
func (g genericSink) OnSubscribe(evs <-chan audit.Event) {
go func(consumer func(ev audit.Event), evs <-chan audit.Event) {
for ev := range evs {
consumer(ev)
}
}(g.consumer, evs)
}