add recorder

This commit is contained in:
ginuerzh
2022-04-11 23:14:20 +08:00
parent d6f8ec5116
commit 4808441fb3
12 changed files with 301 additions and 27 deletions

42
registry/recorder.go Normal file
View File

@ -0,0 +1,42 @@
package registry
import (
"context"
"github.com/go-gost/core/recorder"
)
type recorderRegistry struct {
registry
}
func (r *recorderRegistry) Register(name string, v recorder.Recorder) error {
return r.registry.Register(name, v)
}
func (r *recorderRegistry) Get(name string) recorder.Recorder {
if name != "" {
return &recorderWrapper{name: name, r: r}
}
return nil
}
func (r *recorderRegistry) get(name string) recorder.Recorder {
if v := r.registry.Get(name); v != nil {
return v.(recorder.Recorder)
}
return nil
}
type recorderWrapper struct {
name string
r *recorderRegistry
}
func (w *recorderWrapper) Record(ctx context.Context, b []byte) error {
v := w.r.get(w.name)
if v == nil {
return nil
}
return v.Record(ctx, b)
}

View File

@ -10,6 +10,7 @@ import (
"github.com/go-gost/core/bypass"
"github.com/go-gost/core/chain"
"github.com/go-gost/core/hosts"
"github.com/go-gost/core/recorder"
"github.com/go-gost/core/resolver"
"github.com/go-gost/core/service"
)
@ -31,6 +32,7 @@ var (
bypassReg Registry[bypass.Bypass] = &bypassRegistry{}
resolverReg Registry[resolver.Resolver] = &resolverRegistry{}
hostsReg Registry[hosts.HostMapper] = &hostsRegistry{}
recorderReg Registry[recorder.Recorder] = &recorderRegistry{}
)
type Registry[T any] interface {
@ -120,3 +122,7 @@ func ResolverRegistry() Registry[resolver.Resolver] {
func HostsRegistry() Registry[hosts.HostMapper] {
return hostsReg
}
func RecorderRegistry() Registry[recorder.Recorder] {
return recorderReg
}