40 lines
665 B
Go
Raw Normal View History

2024-03-29 18:05:09 +08:00
package srv
import (
"context"
"github.com/loveuer/nfflow/internal/opt"
"github.com/loveuer/nfflow/internal/util"
"github.com/sirupsen/logrus"
"net"
)
func Run(ctx context.Context) error {
app := initApp()
ln, err := net.Listen("tcp", opt.Cfg.Address)
if err != nil {
logrus.Errorf("srv.Run: err=%v", err)
return err
}
ready := make(chan bool)
go func() {
ready <- true
<-ctx.Done()
if err = app.Shutdown(util.Timeout(2)); err != nil {
logrus.Infof("srv.Run: nf app shutdown err=%v", err)
}
}()
<-ready
if err = app.RunListener(ln); err != nil {
logrus.Errorf("srv.Run: nf app run err=%v", err)
return err
}
return nil
}