Files
sing-box-extended-mirror/adapter/lifecycle_legacy.go
T

53 lines
1.2 KiB
Go
Raw Normal View History

2024-11-09 21:16:11 +08:00
package adapter
func LegacyStart(starter any, stage StartStage) error {
2024-11-21 18:10:41 +08:00
if lifecycle, isLifecycle := starter.(Lifecycle); isLifecycle {
return lifecycle.Start(stage)
}
2024-11-09 21:16:11 +08:00
switch stage {
case StartStateInitialize:
if preStarter, isPreStarter := starter.(interface {
PreStart() error
}); isPreStarter {
return preStarter.PreStart()
}
case StartStateStart:
if starter, isStarter := starter.(interface {
Start() error
}); isStarter {
return starter.Start()
}
2024-11-10 16:46:59 +08:00
case StartStateStarted:
2024-11-09 21:16:11 +08:00
if postStarter, isPostStarter := starter.(interface {
PostStart() error
}); isPostStarter {
return postStarter.PostStart()
}
}
return nil
}
2024-11-10 16:46:59 +08:00
type lifecycleServiceWrapper struct {
2025-03-29 17:24:34 +08:00
SimpleLifecycle
2024-11-10 16:46:59 +08:00
name string
}
2025-03-29 17:24:34 +08:00
func NewLifecycleService(service SimpleLifecycle, name string) LifecycleService {
2024-11-10 16:46:59 +08:00
return &lifecycleServiceWrapper{
2025-03-29 17:24:34 +08:00
SimpleLifecycle: service,
name: name,
2024-11-10 16:46:59 +08:00
}
}
func (l *lifecycleServiceWrapper) Name() string {
return l.name
}
func (l *lifecycleServiceWrapper) Start(stage StartStage) error {
2025-03-29 17:24:34 +08:00
return LegacyStart(l.SimpleLifecycle, stage)
2024-11-10 16:46:59 +08:00
}
func (l *lifecycleServiceWrapper) Close() error {
2025-03-29 17:24:34 +08:00
return l.SimpleLifecycle.Close()
2024-11-10 16:46:59 +08:00
}