Refactor(engine): add StartOrFatal/StopOrFatal wrappers (#552)
CodeQL / Analyze (go) (push) Canceled after 0s
Publish Docker Image / Docker (push) Canceled after 0s
Linter / Linter (push) Canceled after 0s
Test / Unit Test (push) Canceled after 0s
Test / Build Test (push) Canceled after 0s
Test / E2E Test (HTTP) (push) Canceled after 0s
Test / E2E Test (Relay) (push) Canceled after 0s
Test / E2E Test (SOCKSv4) (push) Canceled after 0s
Test / E2E Test (SOCKSv5) (push) Canceled after 0s
Test / E2E Test (SSH) (push) Canceled after 0s
Test / E2E Test (Direct) (push) Canceled after 0s
Test / E2E Test (Shadowsocks) (push) Canceled after 0s

* Feat(engine): make Start/Stop return error instead of log.Fatalf (#550)

* Refactor(engine): add StartOrFatal/StopOrFatal wrappers

---------

Co-authored-by: Jason Lyu <xjasonlyu@gmail.com>
This commit is contained in:
LanceLi
2026-09-13 16:58:30 -04:00
committed by GitHub
co-authored by Jason Lyu
parent bd06dbfa1d
commit 5d9fac67bb
2 changed files with 22 additions and 18 deletions
+20 -16
View File
@@ -42,20 +42,6 @@ var (
_icmpHandler adapter.NetworkHandler
)
// Start starts the default engine up.
func Start() {
if err := start(); err != nil {
log.Fatalf("[ENGINE] failed to start: %v", err)
}
}
// Stop shuts the default engine down.
func Stop() {
if err := stop(); err != nil {
log.Fatalf("[ENGINE] failed to stop: %v", err)
}
}
// Insert loads *Key to the default engine.
func Insert(k *Key) {
_engineMu.Lock()
@@ -70,7 +56,8 @@ func SetICMPHandler(h adapter.NetworkHandler) {
_engineMu.Unlock()
}
func start() error {
// Start starts the default engine up.
func Start() error {
_engineMu.Lock()
defer _engineMu.Unlock()
@@ -90,7 +77,16 @@ func start() error {
return nil
}
func stop() (err error) {
// StartOrFatal starts the default engine up, and exits the
// process if it fails.
func StartOrFatal() {
if err := Start(); err != nil {
log.Fatalf("[ENGINE] failed to start: %v", err)
}
}
// Stop shuts the default engine down.
func Stop() error {
_engineMu.Lock()
if _defaultDevice != nil {
_defaultDevice.Close()
@@ -103,6 +99,14 @@ func stop() (err error) {
return nil
}
// StopOrFatal shuts the default engine down, and exits the
// process if it fails.
func StopOrFatal() {
if err := Stop(); err != nil {
log.Fatalf("[ENGINE] failed to stop: %v", err)
}
}
func execCommand(cmd string) error {
parts, err := shlex.Split(cmd)
if err != nil {
+2 -2
View File
@@ -61,8 +61,8 @@ func main() {
engine.Insert(key)
engine.Start()
defer engine.Stop()
engine.StartOrFatal()
defer engine.StopOrFatal()
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)