mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-08-22 18:43:15 +00:00

* [NOD-492] Split ApiServer to server and syncd. * [NOD-492] Add missing file. * [NOD-492] Remove references to --migrate from common config. * [NOD-492] Move MQTT to the sync daemon. * [NOD-492] Fix server Dockerfile and create one for syncd. * [NOD-492] Rename ApiServer to Kasparov. * [NOD-492] Fix packages. * [NOD-492] Fix more packages. * [NOD-492] Fix comments and package names. * [NOD-492] Move blank import packages to main. * [NOD-492] Move common logging logic out of individual config.go files. * [NOD-492] Move database models to a package called dbmodels. * [NOD-492] Rename models package to apimodels.
76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/daglabs/btcd/kasparov/database"
|
|
"github.com/daglabs/btcd/kasparov/jsonrpc"
|
|
"github.com/daglabs/btcd/kasparov/syncd/config"
|
|
"github.com/daglabs/btcd/kasparov/syncd/mqtt"
|
|
"github.com/daglabs/btcd/signal"
|
|
"github.com/daglabs/btcd/util/panics"
|
|
_ "github.com/golang-migrate/migrate/v4/database/mysql"
|
|
_ "github.com/golang-migrate/migrate/v4/source/file"
|
|
_ "github.com/jinzhu/gorm/dialects/mysql"
|
|
"github.com/pkg/errors"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
defer panics.HandlePanic(log, nil, nil)
|
|
|
|
err := config.Parse()
|
|
if err != nil {
|
|
errString := fmt.Sprintf("Error parsing command-line arguments: %s", err)
|
|
_, fErr := fmt.Fprintf(os.Stderr, errString)
|
|
if fErr != nil {
|
|
panic(errString)
|
|
}
|
|
return
|
|
}
|
|
|
|
if config.ActiveConfig().Migrate {
|
|
err := database.Migrate(&config.ActiveConfig().KasparovFlags)
|
|
if err != nil {
|
|
panic(errors.Errorf("Error migrating database: %s", err))
|
|
}
|
|
return
|
|
}
|
|
|
|
err = database.Connect(&config.ActiveConfig().KasparovFlags)
|
|
if err != nil {
|
|
panic(errors.Errorf("Error connecting to database: %s", err))
|
|
}
|
|
defer func() {
|
|
err := database.Close()
|
|
if err != nil {
|
|
panic(errors.Errorf("Error closing the database: %s", err))
|
|
}
|
|
}()
|
|
|
|
err = mqtt.Connect()
|
|
if err != nil {
|
|
panic(errors.Errorf("Error connecting to MQTT: %s", err))
|
|
}
|
|
defer mqtt.Close()
|
|
|
|
err = jsonrpc.Connect(&config.ActiveConfig().KasparovFlags)
|
|
if err != nil {
|
|
panic(errors.Errorf("Error connecting to servers: %s", err))
|
|
}
|
|
defer jsonrpc.Close()
|
|
|
|
doneChan := make(chan struct{}, 1)
|
|
spawn(func() {
|
|
err := startSync(doneChan)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
})
|
|
|
|
interrupt := signal.InterruptListener()
|
|
<-interrupt
|
|
|
|
// Gracefully stop syncing
|
|
doneChan <- struct{}{}
|
|
}
|