コード例 #1
0
ファイル: sqlstore.go プロジェクト: hlandauf/dht
// Loads the node database into the running DHT. Call this just after running the DHT.
func (ds *DHTStorage) LoadDHT(d *dht.DHT) error {
	db, err := ds.getDB()
	if err != nil {
		return err
	}
	defer db.Close()

	err = ds.createTablesWith(db)
	if err != nil {
		return err
	}

	r, err := db.Query(`SELECT hostname,node_id FROM dht_routers`)
	if err != nil {
		return err
	}
	defer r.Close()
	for r.Next() {
		var hostname string
		var node_id interface{}
		err = r.Scan(&hostname, &node_id)
		if err != nil {
			return err
		}

		node_id_s, ok := node_id.([]byte)
		if !ok {
			node_id_s = []byte{}
		}

		node_id_bin, err := hex.DecodeString(string(node_id_s))
		if err != nil {
			node_id_bin = []byte{}
		}

		unused(node_id)
		d.AddNode(hostname, string(node_id_bin))
	}

	return nil
}