2021-01-13 20:38:52 +00:00
|
|
|
package sink
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"gitlab.com/inetmock/inetmock/pkg/audit"
|
|
|
|
)
|
|
|
|
|
2021-01-26 17:50:53 +00:00
|
|
|
func NewGRPCSink(name string, consumer func(ev audit.Event)) audit.Sink {
|
2021-01-13 20:38:52 +00:00
|
|
|
return &grpcSink{
|
|
|
|
name: name,
|
|
|
|
consumer: consumer,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type grpcSink struct {
|
|
|
|
name string
|
|
|
|
ctx context.Context
|
|
|
|
consumer func(ev audit.Event)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (g grpcSink) Name() string {
|
|
|
|
return g.name
|
|
|
|
}
|
|
|
|
|
2021-01-26 17:50:53 +00:00
|
|
|
func (g grpcSink) OnSubscribe(evs <-chan audit.Event) {
|
|
|
|
go func(consumer func(ev audit.Event), evs <-chan audit.Event) {
|
|
|
|
for ev := range evs {
|
|
|
|
consumer(ev)
|
2021-01-13 20:38:52 +00:00
|
|
|
}
|
2021-01-26 17:50:53 +00:00
|
|
|
}(g.consumer, evs)
|
2021-01-13 20:38:52 +00:00
|
|
|
}
|