2020-12-30 16:03:01 +00:00
|
|
|
//go:generate mockgen -source=$GOFILE -destination=./../../internal/mock/audit/audit.mock.go -package=audit_mock
|
|
|
|
|
|
|
|
package audit
|
|
|
|
|
|
|
|
import (
|
2021-01-26 17:50:53 +00:00
|
|
|
"context"
|
2020-12-30 16:03:01 +00:00
|
|
|
"errors"
|
|
|
|
"io"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
ErrSinkAlreadyRegistered = errors.New("sink with same name already registered")
|
|
|
|
)
|
|
|
|
|
|
|
|
type Emitter interface {
|
|
|
|
Emit(ev Event)
|
|
|
|
}
|
|
|
|
|
|
|
|
type Sink interface {
|
|
|
|
Name() string
|
2021-01-26 17:50:53 +00:00
|
|
|
OnSubscribe(evs <-chan Event)
|
2020-12-30 16:03:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type EventStream interface {
|
|
|
|
io.Closer
|
|
|
|
Emitter
|
2021-01-26 17:50:53 +00:00
|
|
|
RegisterSink(ctx context.Context, s Sink) error
|
2020-12-30 16:03:01 +00:00
|
|
|
Sinks() []string
|
2021-01-16 17:26:15 +00:00
|
|
|
RemoveSink(name string) (exists bool)
|
2020-12-30 16:03:01 +00:00
|
|
|
}
|