Ori Newman b7b41f1a94 [NOD-159] Wrap all goroutines to handle panics (#290)
* [NOD-159] Wrap all goroutines to handle panics

* [NOD-159] Fix gofmt errors

* [NOD-159] Add comment to HandlePanic

* [NOD-159] Merge panics and gowrapper packages

* [NOD-159] Added missing initialization
2019-05-07 16:13:06 +03:00

50 lines
902 B
Go

package main
import (
"fmt"
"os"
"github.com/daglabs/btcd/signal"
"github.com/daglabs/btcd/util/panics"
)
func main() {
defer panics.HandlePanic(log)
cfg, err := parseConfig()
if err != nil {
fmt.Fprintf(os.Stderr, "Error parsing command-line arguments: %s", err)
os.Exit(1)
}
if cfg.Verbose {
enableRPCLogging()
}
addressList, err := getAddressList(cfg)
if err != nil {
panic(fmt.Errorf("Couldn't load address list: %s", err))
}
clients, err := connectToServers(cfg, addressList)
if err != nil {
panic(fmt.Errorf("Error connecting to servers: %s", err))
}
defer disconnect(clients)
spawn(func() {
err = mineLoop(clients)
if err != nil {
panic(fmt.Errorf("Error in main loop: %s", err))
}
})
interrupt := signal.InterruptListener()
<-interrupt
}
func disconnect(clients []*simulatorClient) {
for _, client := range clients {
client.Disconnect()
}
}