add observer
This commit is contained in:
parent
6b5c04b5e4
commit
5a427b4eaf
@ -11,6 +11,7 @@ import (
|
|||||||
"github.com/go-gost/core/limiter/traffic"
|
"github.com/go-gost/core/limiter/traffic"
|
||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
"github.com/go-gost/core/metadata"
|
"github.com/go-gost/core/metadata"
|
||||||
|
"github.com/go-gost/core/observer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
@ -22,6 +23,7 @@ type Options struct {
|
|||||||
Limiter traffic.TrafficLimiter
|
Limiter traffic.TrafficLimiter
|
||||||
TLSConfig *tls.Config
|
TLSConfig *tls.Config
|
||||||
Logger logger.Logger
|
Logger logger.Logger
|
||||||
|
Observer observer.Observer
|
||||||
Service string
|
Service string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,6 +77,12 @@ func LoggerOption(logger logger.Logger) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ObserverOption(observer observer.Observer) Option {
|
||||||
|
return func(opts *Options) {
|
||||||
|
opts.Observer = observer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func ServiceOption(service string) Option {
|
func ServiceOption(service string) Option {
|
||||||
return func(opts *Options) {
|
return func(opts *Options) {
|
||||||
opts.Service = service
|
opts.Service = service
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/go-gost/core/limiter/conn"
|
"github.com/go-gost/core/limiter/conn"
|
||||||
"github.com/go-gost/core/limiter/traffic"
|
"github.com/go-gost/core/limiter/traffic"
|
||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
|
"github.com/go-gost/x/stats"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
@ -21,6 +22,7 @@ type Options struct {
|
|||||||
TrafficLimiter traffic.TrafficLimiter
|
TrafficLimiter traffic.TrafficLimiter
|
||||||
ConnLimiter conn.ConnLimiter
|
ConnLimiter conn.ConnLimiter
|
||||||
Chain chain.Chainer
|
Chain chain.Chainer
|
||||||
|
Stats *stats.Stats
|
||||||
Logger logger.Logger
|
Logger logger.Logger
|
||||||
Service string
|
Service string
|
||||||
ProxyProtocol int
|
ProxyProtocol int
|
||||||
@ -76,6 +78,12 @@ func ChainOption(chain chain.Chainer) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StatsOption(stats *stats.Stats) Option {
|
||||||
|
return func(opts *Options) {
|
||||||
|
opts.Stats = stats
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func LoggerOption(logger logger.Logger) Option {
|
func LoggerOption(logger logger.Logger) Option {
|
||||||
return func(opts *Options) {
|
return func(opts *Options) {
|
||||||
opts.Logger = logger
|
opts.Logger = logger
|
||||||
|
22
observer/observer.go
Normal file
22
observer/observer.go
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package observer
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
type Options struct{}
|
||||||
|
|
||||||
|
type Option func(opts *Options)
|
||||||
|
|
||||||
|
type Observer interface {
|
||||||
|
Observe(ctx context.Context, events []Event, opts ...Option) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type EventType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
EventStatus EventType = "status"
|
||||||
|
EventStats EventType = "stats"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Event interface {
|
||||||
|
Type() EventType
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user