mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00

* [NOD-380] Add MQTT to the project. * [NOD-380] Add MQTT params to config. * [NOD-380] Implement connecting to an mqtt broker. * [NOD-380] Fix a comment. * [NOD-380] Removed unnecessary option. * [NOD-380] Added comments to MQTT functions. * [NOD-380] Fix copy+paste error. * [NOD-380] Make it so that all the mqtt flags must be passed together. * [NOD-380] Use activeConfig instead of passing it everywhere.
82 lines
1.8 KiB
Go
82 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/daglabs/btcd/apiserver/mqtt"
|
|
"github.com/pkg/errors"
|
|
"os"
|
|
|
|
"github.com/daglabs/btcd/apiserver/config"
|
|
"github.com/daglabs/btcd/apiserver/database"
|
|
"github.com/daglabs/btcd/apiserver/jsonrpc"
|
|
"github.com/daglabs/btcd/apiserver/server"
|
|
"github.com/daglabs/btcd/logger"
|
|
"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"
|
|
)
|
|
|
|
func main() {
|
|
defer panics.HandlePanic(log, logger.BackendLog, nil)
|
|
|
|
cfg, 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 cfg.Migrate {
|
|
err := database.Migrate()
|
|
if err != nil {
|
|
panic(errors.Errorf("Error migrating database: %s", err))
|
|
}
|
|
return
|
|
}
|
|
|
|
err = database.Connect()
|
|
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()
|
|
if err != nil {
|
|
panic(errors.Errorf("Error connecting to servers: %s", err))
|
|
}
|
|
defer jsonrpc.Close()
|
|
|
|
shutdownServer := server.Start(config.ActiveConfig().HTTPListen)
|
|
defer shutdownServer()
|
|
|
|
doneChan := make(chan struct{}, 1)
|
|
spawn(func() {
|
|
err := startSync(doneChan)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
})
|
|
|
|
interrupt := signal.InterruptListener()
|
|
<-interrupt
|
|
|
|
// Gracefully stop syncing
|
|
doneChan <- struct{}{}
|
|
}
|