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 if err := m.updateBootstrapNodes(); err != nil {
31 ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqSeconds) * time.Second)
32 for ; true; <-ticker.C {
38 // create or update: https://github.com/jinzhu/gorm/issues/1307
39 func (m *monitor) updateBootstrapNodes() error {
40 for _, node := range m.cfg.Nodes {
42 PubKey: node.PubKey.String(),
47 if err := m.db.Where(&orm.Node{PubKey: ormNode.PubKey}).
52 }).FirstOrCreate(ormNode).Error; err != nil {
61 func (m *monitor) discovery() {
64 func (m *monitor) monitorRountine() error {
65 // TODO: dail, get lantency & best_height
66 // TODO: decide check_height("best best_height" - "confirmations")
67 // TODO: get blockhash by check_height, get latency
68 // TODO: update lantency, active_time and status