//getWithRange gets records with range using node n and adds to cache after checking them. //if no records exist in cache, uses head //return true if gotten records>0 func getWithRange(n *node.Node, c *thread.Cache, dm *Manager) bool { got := false for { from, to := dm.Get(n) if from <= 0 { return got } var okcount int ress, err := n.Talk(fmt.Sprintf("/get/%s/%d-%d", c.Datfile, from, to), nil) if err != nil { dm.Finished(n, false) return false } err = db.DB.Update(func(tx *bolt.Tx) error { for _, res := range ress { errf := c.CheckData(tx, res, -1, "", from, to) if errf == nil { okcount++ } } return nil }) if err != nil { log.Println(err) } dm.Finished(n, true) log.Println(c.Datfile, okcount, "records were saved from", n.Nodestr) got = okcount > 0 } }