diff --git a/app/actor/graphql/actor.go b/app/actor/graphql/actor.go index 12146ad..f68954a 100644 --- a/app/actor/graphql/actor.go +++ b/app/actor/graphql/actor.go @@ -4,48 +4,45 @@ import ( "context" "time" - "okp4/nemeton-leaderboard/app/message" - "github.com/asynkron/protoactor-go/actor" "github.com/rs/zerolog/log" ) type Actor struct { - srv *server + addr string + srv *server } -func NewActor() *Actor { - return &Actor{} +func NewActor(addr string) *Actor { + return &Actor{ + addr: addr, + srv: makeHTTPServer( + addr, + makeRouter(), + ), + } } func (a *Actor) Receive(ctx actor.Context) { - switch msg := ctx.Message().(type) { - case *message.Start: - a.handleStart(msg) + switch ctx.Message().(type) { + case *actor.Started: + a.handleStart() case *actor.Stopping: a.handleStop() } } -func (a *Actor) handleStart(msg *message.Start) { - if a.srv != nil { - log.Warn().Msg("GraphQL server already started.") - return - } - a.srv = makeHTTPServer( - msg.ListenAddr, - makeRouter(), - ) +func (a *Actor) handleStart() { a.srv.start() - log.Info().Str("addr", msg.ListenAddr).Msg("GraphQL server started") + log.Info().Str("addr", a.addr).Msg("🔥 GraphQL server started") } func (a *Actor) handleStop() { ctx, cancelFn := context.WithTimeout(context.Background(), 1*time.Second) defer cancelFn() - log.Info().Msg("Stopping GraphQL server...") + log.Info().Msg("\U0001F9EF Stopping GraphQL server...") if err := a.srv.stop(ctx); err != nil { - log.Err(err).Msg("Couldn't stop GraphQL server") + log.Err(err).Msg("❌ Couldn't stop GraphQL server") } } diff --git a/app/actor/graphql/http.go b/app/actor/graphql/http.go index 945659c..16ce9da 100644 --- a/app/actor/graphql/http.go +++ b/app/actor/graphql/http.go @@ -32,7 +32,7 @@ func (s *server) start() { defer s.wg.Done() if err := s.srv.ListenAndServe(); err != http.ErrServerClosed { - log.Fatal().Err(err).Msg("HTTP server stopped unexpectedly") + log.Fatal().Err(err).Msg("❌ HTTP server stopped unexpectedly") } }() } diff --git a/app/message/graphql.go b/app/message/graphql.go deleted file mode 100644 index b8500b6..0000000 --- a/app/message/graphql.go +++ /dev/null @@ -1,5 +0,0 @@ -package message - -type Start struct { - ListenAddr string -} diff --git a/app/system/bootstrap.go b/app/system/bootstrap.go index c5d6943..0973d05 100644 --- a/app/system/bootstrap.go +++ b/app/system/bootstrap.go @@ -2,7 +2,6 @@ package system import ( "okp4/nemeton-leaderboard/app/actor/graphql" - "okp4/nemeton-leaderboard/app/message" "github.com/asynkron/protoactor-go/actor" "github.com/rs/zerolog/log" @@ -23,7 +22,7 @@ func Bootstrap(listenAddr string) *App { ctx := actor.NewActorSystem().Root initPID, err := ctx.SpawnNamed(initProps, "init") if err != nil { - log.Panic().Err(err).Msg("Could not create init actor") + log.Panic().Err(err).Msg("❌ Could not create init actor") } return &App{ @@ -38,15 +37,10 @@ func (app *App) Stop() error { func boot(ctx actor.Context, listenAddr string) { graphqlProps := actor.PropsFromProducer(func() actor.Actor { - return graphql.NewActor() + return graphql.NewActor(listenAddr) }) - graphqlPID, err := ctx.SpawnNamed(graphqlProps, "graphql") - if err != nil { - log.Panic().Err(err).Msg("Could not create graphql actor") + if _, err := ctx.SpawnNamed(graphqlProps, "graphql"); err != nil { + log.Panic().Err(err).Msg("❌Could not create graphql actor") } - - ctx.Send(graphqlPID, &message.Start{ - ListenAddr: listenAddr, - }) } diff --git a/cmd/start.go b/cmd/start.go index bb3cb19..53ec217 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -27,9 +27,9 @@ var ( signal.Notify(kill, syscall.SIGINT, syscall.SIGTERM) <-kill - log.Info().Msg("Stopping app") + log.Info().Msg("\U0001F9EF Stopping app") if err := app.Stop(); err != nil { - log.Fatal().Err(err).Msg("Unexpected error when stopping app") + log.Fatal().Err(err).Msg("❌ Unexpected error when stopping app") } }, }