arnaucube
arnaucube/go-dhtPublic Self-hosted repository
go-dht/node/node.go
node/node.goRaw
 1package node
 2
 3import (
 4	"go-dht/kademlia"
 5)
 6
 7type Node struct {
 8	port     string
 9	kademlia *kademlia.Kademlia
10}
11
12func NewNode() (Node, error) {
13	id, err := kademlia.NewID()
14	if err != nil {
15		return Node{}, err
16	}
17
18	var n Node
19	n.kademlia = kademlia.NewKademliaTable(id)
20	return n, nil
21}
22
23func LoadNode(idStr string) (Node, error) {
24	id, err := kademlia.IDFromString(idStr)
25	if err != nil {
26		return Node{}, err
27	}
28	var n Node
29	n.kademlia = kademlia.NewKademliaTable(id)
30	return n, nil
31}
32
33func (n Node) ID() kademlia.ID {
34	return n.kademlia.ID
35}
36
37// Exposed RPC calls: Ping, Store, FindNode, FindValue
38
39func (n *Node) Ping(ln kademlia.ListedNode, ack *bool) error {
40	n.kademlia.Update(ln)
41	return nil
42}
43
44func (n *Node) Store(data []byte, ack *bool) error {
45
46	return nil
47}
48
49func (n *Node) FindNode() {
50
51}
52
53func (n *Node) FindValue() {
54
55}