Files
kubevpn/pkg/core/server.go

38 lines
537 B
Go

package core
import (
"context"
"net"
log "github.com/sirupsen/logrus"
)
type Server struct {
Listener net.Listener
Handler Handler
}
// Serve serves as a proxy server.
func (s *Server) Serve(ctx context.Context) error {
l := s.Listener
defer l.Close()
//go func() {
// <-ctx.Done()
// l.Close()
//}()
for {
select {
case <-ctx.Done():
return nil
default:
conn, err := l.Accept()
if err != nil {
log.Warnf("server: accept error: %v", err)
continue
}
go s.Handler.Handle(ctx, conn)
}
}
}