Add a new protocol

Co-authored-by: Gérald Croës <gerald@containo.us>
This commit is contained in:
Julien Salleyron 2019-03-14 09:30:04 +01:00 committed by Traefiker Bot
parent 0ca2149408
commit 4a68d29ce2
231 changed files with 6895 additions and 4395 deletions

28
tcp/switcher.go Normal file
View file

@ -0,0 +1,28 @@
package tcp
import (
"net"
"github.com/containous/traefik/safe"
)
// HandlerSwitcher is a TCP handler switcher
type HandlerSwitcher struct {
router safe.Safe
}
// ServeTCP forwards the TCP connection to the current active handler
func (s *HandlerSwitcher) ServeTCP(conn net.Conn) {
handler := s.router.Get()
h, ok := handler.(Handler)
if ok {
h.ServeTCP(conn)
} else {
conn.Close()
}
}
// Switch sets the new TCP handler to use for new connections
func (s *HandlerSwitcher) Switch(handler Handler) {
s.router.Set(handler)
}