Reduced main.go code complexity

This commit is contained in:
Quentin McGaw
2020-05-02 14:48:18 +00:00
parent 6049b10209
commit 363fabc810
5 changed files with 238 additions and 288 deletions

View File

@@ -16,22 +16,28 @@ type Server interface {
}
type server struct {
address string
logger logging.Logger
restartOpenvpn func()
address string
logger logging.Logger
restartOpenvpn func()
restartOpenvpnSet context.Context
restartOpenvpnSetSignal func()
sync.RWMutex
}
func New(address string, logger logging.Logger) Server {
restartOpenvpnSet, restartOpenvpnSetSignal := context.WithCancel(context.Background())
return &server{
address: address,
logger: logger.WithPrefix("http server: "),
address: address,
logger: logger.WithPrefix("http server: "),
restartOpenvpnSet: restartOpenvpnSet,
restartOpenvpnSetSignal: restartOpenvpnSetSignal,
}
}
func (s *server) Run(ctx context.Context) error {
if s.restartOpenvpn == nil {
s.logger.Warn("restartOpenvpn function is not set")
if s.restartOpenvpnSet.Err() == nil {
s.logger.Warn("restartOpenvpn function is not set, waiting...")
<-s.restartOpenvpnSet.Done()
}
server := http.Server{Addr: s.address, Handler: s.makeHandler()}
go func() {
@@ -50,6 +56,9 @@ func (s *server) SetOpenVPNRestart(f func()) {
s.Lock()
defer s.Unlock()
s.restartOpenvpn = f
if s.restartOpenvpnSet.Err() == nil {
s.restartOpenvpnSetSignal()
}
}
func (s *server) makeHandler() http.HandlerFunc {