traefik/pkg/tcp/switcher.go

27 lines
544 B
Go
Raw Normal View History

package tcp
import (
"github.com/traefik/traefik/v2/pkg/safe"
)
2020-05-11 10:06:07 +00:00
// HandlerSwitcher is a TCP handler switcher.
type HandlerSwitcher struct {
router safe.Safe
}
2020-05-11 10:06:07 +00:00
// ServeTCP forwards the TCP connection to the current active handler.
func (s *HandlerSwitcher) ServeTCP(conn WriteCloser) {
handler := s.router.Get()
h, ok := handler.(Handler)
if ok {
h.ServeTCP(conn)
} else {
conn.Close()
}
}
2020-05-11 10:06:07 +00:00
// Switch sets the new TCP handler to use for new connections.
func (s *HandlerSwitcher) Switch(handler Handler) {
s.router.Set(handler)
}