修改frpc异步执行

This commit is contained in:
haidy 2018-05-14 14:37:48 +08:00
parent 626dbaa92c
commit 0749c2eb4d
2 changed files with 27 additions and 3 deletions

View File

@ -36,7 +36,7 @@ func NewService(pxyCfgs map[string]config.ProxyConf, visitorCfgs map[string]conf
return
}
func (svr *Service) Run() error {
func (svr *Service) Run(cmd bool) error {
err := svr.ctl.Run()
if err != nil {
return err
@ -50,7 +50,13 @@ func (svr *Service) Run() error {
log.Info("admin server listen on %s:%d", g.GlbClientCfg.AdminAddr, g.GlbClientCfg.AdminPort)
}
if cmd {
<-svr.closedCh
} else {
go func() {
<-svr.closedCh
}()
}
return nil
}

View File

@ -95,13 +95,20 @@ var rootCmd = &cobra.Command{
},
}
// if cmd model
var cmd bool
var service *client.Service
func Execute() {
cmd = true
if err := rootCmd.Execute(); err != nil {
os.Exit(1)
}
}
func RunFrpc(cfgFilePath string) (err error) {
cmd = false
return runClient(cfgFilePath)
}
@ -208,12 +215,23 @@ func startService(pxyCfgs map[string]config.ProxyConf, visitorCfgs map[string]co
}
}
svr := client.NewService(pxyCfgs, visitorCfgs)
service = svr
// Capture the exit signal if we use kcp.
if g.GlbClientCfg.Protocol == "kcp" {
go handleSignal(svr)
}
err = svr.Run()
err = svr.Run(cmd)
return
}
func StopFrp() (err error) {
if service == nil {
return fmt.Errorf("frp not start")
}
service.Close()
log.Info("frpc is stoped")
return
}