Skip to content

Commit

Permalink
fix(cmd): Handle kill signal to properly stop server
Browse files Browse the repository at this point in the history
  • Loading branch information
gfanton committed Mar 6, 2020
1 parent 1d98744 commit b423019
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 12 deletions.
33 changes: 27 additions & 6 deletions go/cmd/rdvp/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
libp2p_rpdb "github.com/libp2p/go-libp2p-rendezvous/db/sqlite"

ma "github.com/multiformats/go-multiaddr"
run "github.com/oklog/run"

"github.com/peterbourgon/ff"
"github.com/peterbourgon/ff/ffcli"
Expand All @@ -30,13 +31,16 @@ func main() {
log.SetFlags(0)

var (
process run.Group

logger *zap.Logger
globalFlags = flag.NewFlagSet("rdvp", flag.ExitOnError)
globalDebug = globalFlags.Bool("debug", false, "debug mode")

serveFlags = flag.NewFlagSet("serve", flag.ExitOnError)
serveFlagsURN = serveFlags.String("db", ":memory:", "rdvp sqlite URN")
serveFlagsListeners = serveFlags.String("l", ":4040", "lists of listeners of (m)addrs separate by a comma")
serveFlagsPK = serveFlags.String("pk", "", "private key file path(not implemented)")
)

globalPreRun := func() error {
Expand Down Expand Up @@ -66,7 +70,12 @@ func main() {
return nil
}

ctx := context.Background()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

// handle close signal
execute, interupt := run.SignalHandler(ctx, os.Interrupt)
process.Add(execute, interupt)

serve := &ffcli.Command{
Name: "serve",
Expand All @@ -80,8 +89,9 @@ func main() {
ctx, cancel := context.WithCancel(ctx)
defer cancel()

_ = logger
_ = globalDebug
if *serveFlagsPK != "" {
logger.Warn("custom pk not supported yet")
}

laddrs := strings.Split(*serveFlagsListeners, ",")
listeners, err := parseAddrs(laddrs...)
Expand All @@ -108,7 +118,8 @@ func main() {
// @TODO(gfanton): override libp2p logger
_ = libp2p_rp.NewRendezvousService(host, db)

select {}
<-ctx.Done()
return ctx.Err()
},
}

Expand All @@ -123,9 +134,19 @@ func main() {
},
}

if err := root.Run(os.Args[1:]); err != nil {
log.Fatalf("error: %v", err)
// add root command to process
process.Add(func() error {
return root.Run(os.Args[1:])
}, func(error) {
cancel()
})

// run process
if err := process.Run(); err != nil && err != context.Canceled {
log.Fatal(err)
}

os.Exit(0)
}

// helpers
Expand Down
4 changes: 2 additions & 2 deletions go/go.mod

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions go/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit b423019

Please sign in to comment.