修改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 return
} }
func (svr *Service) Run() error { func (svr *Service) Run(cmd bool) error {
err := svr.ctl.Run() err := svr.ctl.Run()
if err != nil { if err != nil {
return err 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) log.Info("admin server listen on %s:%d", g.GlbClientCfg.AdminAddr, g.GlbClientCfg.AdminPort)
} }
if cmd {
<-svr.closedCh <-svr.closedCh
} else {
go func() {
<-svr.closedCh
}()
}
return nil return nil
} }

View File

@ -95,13 +95,20 @@ var rootCmd = &cobra.Command{
}, },
} }
// if cmd model
var cmd bool
var service *client.Service
func Execute() { func Execute() {
cmd = true
if err := rootCmd.Execute(); err != nil { if err := rootCmd.Execute(); err != nil {
os.Exit(1) os.Exit(1)
} }
} }
func RunFrpc(cfgFilePath string) (err error) { func RunFrpc(cfgFilePath string) (err error) {
cmd = false
return runClient(cfgFilePath) return runClient(cfgFilePath)
} }
@ -208,12 +215,23 @@ func startService(pxyCfgs map[string]config.ProxyConf, visitorCfgs map[string]co
} }
} }
svr := client.NewService(pxyCfgs, visitorCfgs) svr := client.NewService(pxyCfgs, visitorCfgs)
service = svr
// Capture the exit signal if we use kcp. // Capture the exit signal if we use kcp.
if g.GlbClientCfg.Protocol == "kcp" { if g.GlbClientCfg.Protocol == "kcp" {
go handleSignal(svr) 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 return
} }