mirror of
https://github.com/black-ant/Ant-Browser.git
synced 2026-07-14 18:48:55 +08:00
41 lines
749 B
Go
41 lines
749 B
Go
package proxy
|
|
|
|
func (bridge *XrayBridge) startExitWatcher() {
|
|
if bridge == nil || bridge.Cmd == nil {
|
|
return
|
|
}
|
|
if bridge.ExitDone == nil {
|
|
bridge.ExitDone = make(chan struct{})
|
|
}
|
|
bridge.waitOnce.Do(func() {
|
|
go func() {
|
|
err := bridge.Cmd.Wait()
|
|
bridge.exitMu.Lock()
|
|
bridge.ExitErr = err
|
|
bridge.exitMu.Unlock()
|
|
close(bridge.ExitDone)
|
|
}()
|
|
})
|
|
}
|
|
|
|
func (bridge *XrayBridge) waitExit() error {
|
|
if bridge == nil || bridge.Cmd == nil {
|
|
return nil
|
|
}
|
|
bridge.startExitWatcher()
|
|
if bridge.ExitDone == nil {
|
|
return nil
|
|
}
|
|
<-bridge.ExitDone
|
|
return bridge.exitErr()
|
|
}
|
|
|
|
func (bridge *XrayBridge) exitErr() error {
|
|
if bridge == nil {
|
|
return nil
|
|
}
|
|
bridge.exitMu.Lock()
|
|
defer bridge.exitMu.Unlock()
|
|
return bridge.ExitErr
|
|
}
|