You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
837 B

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