Exemplo n.º 1
0
// Save the current set of reachable DHT nodes to disk.
func Save(filename string, dht *dht.DHT) error {
	d := doc{
		NodeID: dht.NodeID(),
	}

	nodes := dht.ListReachableNodes()
	for i := range nodes {
		d.Nodes = append(d.Nodes, node{
			NodeID: nodes[i].NodeID.String(),
			Addr:   nodes[i].Addr.String(),
		})
	}

	b, err := json.Marshal(&d)
	if err != nil {
		return err
	}

	tfilename := filename + ".tmp"

	defer os.Remove(tfilename)

	err = ioutil.WriteFile(tfilename, b, 0644)
	if err != nil {
		return err
	}

	return os.Rename(tfilename, filename)
}