From eb66692b474faffbd7a8eec852d86ad52338f444 Mon Sep 17 00:00:00 2001 From: kjuulh Date: Wed, 21 Sep 2022 21:40:44 +0200 Subject: [PATCH] With actual nonblocking one by one manager --- manager.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/manager.go b/manager.go index d5eba54..d60a026 100644 --- a/manager.go +++ b/manager.go @@ -30,9 +30,30 @@ func NewManager() *Manager { } } -func (m *Manager) RunNonBlocking(ctx context.Context) error { - go m.Run(ctx) +type ComponentsAreReady struct { +} +func (m *Manager) RunNonBlocking(ctx context.Context) error { + m.initLifetime() + err := m.init(ctx) + if err != nil { + return err + } + + err = m.startBlocking(ctx) + if err != nil { + return err + } + + err = m.wait(ctx) + if err != nil { + return err + } + + err = m.shutdown(ctx) + if err != nil { + return err + } return nil } @@ -98,6 +119,14 @@ func (m *Manager) start(ctx context.Context) error { return nil } +func (m *Manager) startBlocking(ctx context.Context) error { + for _, c := range m.components { + m.startComponent(ctx, c) + } + + return nil +} + func (m *Manager) startComponent(ctx context.Context, component Component) { defer func() { err := recover()