lifecycle_legacy.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package adapter
  2. func LegacyStart(starter any, stage StartStage) error {
  3. switch stage {
  4. case StartStateInitialize:
  5. if preStarter, isPreStarter := starter.(interface {
  6. PreStart() error
  7. }); isPreStarter {
  8. return preStarter.PreStart()
  9. }
  10. case StartStateStart:
  11. if starter, isStarter := starter.(interface {
  12. Start() error
  13. }); isStarter {
  14. return starter.Start()
  15. }
  16. case StartStateStarted:
  17. if postStarter, isPostStarter := starter.(interface {
  18. PostStart() error
  19. }); isPostStarter {
  20. return postStarter.PostStart()
  21. }
  22. }
  23. return nil
  24. }
  25. type lifecycleServiceWrapper struct {
  26. Service
  27. name string
  28. }
  29. func NewLifecycleService(service Service, name string) LifecycleService {
  30. return &lifecycleServiceWrapper{
  31. Service: service,
  32. name: name,
  33. }
  34. }
  35. func (l *lifecycleServiceWrapper) Name() string {
  36. return l.name
  37. }
  38. func (l *lifecycleServiceWrapper) Start(stage StartStage) error {
  39. return LegacyStart(l.Service, stage)
  40. }
  41. func (l *lifecycleServiceWrapper) Close() error {
  42. return l.Service.Close()
  43. }