with better closer
This commit is contained in:
parent
6169d05b3e
commit
4214259591
@ -7,9 +7,9 @@ type DefaultLogger struct{}
|
|||||||
var _ Logger = &DefaultLogger{}
|
var _ Logger = &DefaultLogger{}
|
||||||
|
|
||||||
func (dl *DefaultLogger) Info(msg string, args ...any) {
|
func (dl *DefaultLogger) Info(msg string, args ...any) {
|
||||||
fmt.Printf(msg, args...)
|
fmt.Println(fmt.Sprintf(msg, args...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dl *DefaultLogger) Error(msg string, args ...any) {
|
func (dl *DefaultLogger) Error(msg string, args ...any) {
|
||||||
fmt.Printf(msg, args...)
|
fmt.Println(fmt.Sprintf(msg, args...))
|
||||||
}
|
}
|
||||||
|
33
example/app/main.go
Normal file
33
example/app/main.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.front.kjuulh.io/kjuulh/curre"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
curre.NewManager().
|
||||||
|
Register(&httpServer{}).
|
||||||
|
Register(&httpServer{}).
|
||||||
|
Register(&httpServer{}).
|
||||||
|
Run(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
type httpServer struct{}
|
||||||
|
|
||||||
|
func (hs *httpServer) Init(ctx context.Context) error { return nil }
|
||||||
|
func (hs *httpServer) Start(ctx context.Context) error {
|
||||||
|
|
||||||
|
for {
|
||||||
|
fmt.Println(fmt.Sprintf("server: %T, %s", hs, time.Now().String()))
|
||||||
|
time.Sleep(time.Second * 5)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (hs *httpServer) Close(ctx context.Context) error {
|
||||||
|
return nil
|
||||||
|
}
|
17
manager.go
17
manager.go
@ -23,11 +23,19 @@ type Manager struct {
|
|||||||
|
|
||||||
func NewManager() *Manager {
|
func NewManager() *Manager {
|
||||||
return &Manager{
|
return &Manager{
|
||||||
logger: &DefaultLogger{}, exitChan: make(chan int, 1),
|
logger: &DefaultLogger{},
|
||||||
|
lifetime: ConsoleLifetime,
|
||||||
|
exitChan: make(chan int, 1),
|
||||||
exitCode: OK,
|
exitCode: OK,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Manager) RunNonBlocking(ctx context.Context) error {
|
||||||
|
go m.Run(ctx)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Manager) Run(ctx context.Context) error {
|
func (m *Manager) Run(ctx context.Context) error {
|
||||||
m.initLifetime()
|
m.initLifetime()
|
||||||
err := m.init(ctx)
|
err := m.init(ctx)
|
||||||
@ -50,9 +58,7 @@ func (m *Manager) Run(ctx context.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.exitCode != 0 {
|
os.Exit(m.exitCode)
|
||||||
os.Exit(m.exitCode)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -97,9 +103,8 @@ func (m *Manager) startComponent(ctx context.Context, component Component) {
|
|||||||
err := recover()
|
err := recover()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.logger.Error("Panic occurred in component: %T, error: %s", component, err)
|
m.logger.Error("Panic occurred in component: %T, error: %s", component, err)
|
||||||
|
m.exitChan <- Internal
|
||||||
}
|
}
|
||||||
|
|
||||||
m.exitChan <- Internal
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
m.logger.Info("Starting %T", component)
|
m.logger.Info("Starting %T", component)
|
||||||
|
Loading…
Reference in New Issue
Block a user