package main

import (
	"fmt"
	"log"

	"github.com/nspcc-dev/neofs-node/pkg/util/grace"
)

func fatalOnErr(err error) {
	if err != nil {
		log.Fatal(err)
	}
}

func main() {
	c := defaultCfg()

	init_(c)

	bootUp(c)

	wait(c)

	shutdown(c)
}

func init_(c *cfg) {
	c.ctx = grace.NewGracefulContext(nil)

	initGRPC(c)

	initAccountingService(c)
	initContainerService(c)
	initSessionService(c)
	initObjectService(c)
}

func bootUp(c *cfg) {
	serveGRPC(c)
}

func wait(c *cfg) {
	<-c.ctx.Done()
}

func shutdown(c *cfg) {
	c.cfgGRPC.server.GracefulStop()
	fmt.Println("gRPC server stopped")

	c.wg.Wait()
}