6 "github.com/jinzhu/gorm"
7 log "github.com/sirupsen/logrus"
9 "github.com/vapor/toolbar/precog/config"
10 "github.com/vapor/toolbar/precog/database/orm"
18 func NewMonitor(cfg *config.Config, db *gorm.DB) *monitor {
25 func (m *monitor) Run() {
26 m.updateBootstrapNodes()
28 ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqSeconds) * time.Second)
29 for ; true; <-ticker.C {
35 // create or update: https://github.com/jinzhu/gorm/issues/1307
36 func (m *monitor) updateBootstrapNodes() {
37 for _, node := range m.cfg.Nodes {
39 PublicKey: node.PublicKey.String(),
45 if err := m.db.Where(&orm.Node{PublicKey: ormNode.PublicKey}).
50 }).FirstOrCreate(ormNode).Error; err != nil {
58 func (m *monitor) discovery() {
61 func (m *monitor) monitorRountine() error {
62 // TODO: dail nodes, get lantency & best_height
63 // TODO: decide check_height("best best_height" - "confirmations")
64 // TODO: get blockhash by check_height, get latency
65 // TODO: update lantency, active_time and status