34 lines
635 B
Go
34 lines
635 B
Go
|
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)
|
||
|
}
|