package node
|
|
|
|
import (
|
|
"go-dht/kademlia"
|
|
)
|
|
|
|
type Node struct {
|
|
port string
|
|
kademlia *kademlia.Kademlia
|
|
}
|
|
|
|
func NewNode() (Node, error) {
|
|
id, err := kademlia.NewID()
|
|
if err != nil {
|
|
return Node{}, err
|
|
}
|
|
|
|
var n Node
|
|
n.kademlia = kademlia.NewKademliaTable(id)
|
|
return n, nil
|
|
}
|
|
|
|
func LoadNode(idStr string) (Node, error) {
|
|
id, err := kademlia.IDFromString(idStr)
|
|
if err != nil {
|
|
return Node{}, err
|
|
}
|
|
var n Node
|
|
n.kademlia = kademlia.NewKademliaTable(id)
|
|
return n, nil
|
|
}
|
|
|
|
func (n Node) ID() kademlia.ID {
|
|
return n.kademlia.ID
|
|
}
|
|
|
|
// Exposed RPC calls: Ping, Store, FindNode, FindValue
|
|
|
|
func (n *Node) Ping(ln kademlia.ListedNode, ack *bool) error {
|
|
n.kademlia.Update(ln)
|
|
return nil
|
|
}
|
|
|
|
func (n *Node) Store(data []byte, ack *bool) error {
|
|
|
|
return nil
|
|
}
|
|
|
|
func (n *Node) FindNode() {
|
|
|
|
}
|
|
|
|
func (n *Node) FindValue() {
|
|
|
|
}
|