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}