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.

80 lines
2.0 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. package p2plib
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "time"
  6. "github.com/fatih/color"
  7. )
  8. func InitializePeer(role, ip, port, restport, serverip, serverport string,
  9. configuredMsgCases map[string]func(Peer, Msg)) ThisPeer {
  10. //initialize some vars
  11. rand.Seed(time.Now().Unix())
  12. InitializeDefaultMsgCases(configuredMsgCases)
  13. var tp ThisPeer
  14. tp.Running = true
  15. tp.RunningPeer.Role = role
  16. tp.RunningPeer.Port = port
  17. tp.RunningPeer.RESTPort = restport
  18. tp.RunningPeer.ID = HashPeer(tp.RunningPeer)
  19. tp.ID = tp.RunningPeer.ID
  20. globalTP.PeersConnections.Outcoming.PeerID = tp.RunningPeer.ID
  21. fmt.Println(tp.RunningPeer)
  22. //outcomingPeersList.Peers = append(outcomingPeersList.Peers, peer.RunningPeer)
  23. globalTP.PeersConnections.Outcoming = AppendPeerIfNoExist(globalTP.PeersConnections.Outcoming, tp.RunningPeer)
  24. fmt.Println(globalTP.PeersConnections.Outcoming)
  25. if tp.RunningPeer.Role == "server" {
  26. go tp.AcceptPeers(tp.RunningPeer)
  27. }
  28. if tp.RunningPeer.Role == "client" {
  29. var serverPeer Peer
  30. serverPeer.IP = serverip
  31. serverPeer.Port = serverport
  32. serverPeer.Role = "server"
  33. serverPeer.ID = HashPeer(serverPeer)
  34. go tp.AcceptPeers(tp.RunningPeer)
  35. ConnectToPeer(serverPeer)
  36. }
  37. globalTP = tp
  38. return tp
  39. }
  40. func InitializeDefaultMsgCases(configuredMsgCases map[string]func(Peer, Msg)) {
  41. //msgCases := make(map[string]func(Peer, Msg)) --> no, it's used the global
  42. msgCases = make(map[string]func(Peer, Msg))
  43. //get the user configured msgCases
  44. for k, v := range configuredMsgCases {
  45. msgCases[k] = v
  46. }
  47. msgCases["Hi"] = func(peer Peer, msg Msg) {
  48. color.Yellow(msg.Type)
  49. color.Green(msg.Content)
  50. }
  51. msgCases["PeersList"] = func(peer Peer, msg Msg) {
  52. color.Blue("newPeerslist")
  53. fmt.Println(msg.PeersList)
  54. color.Red("PeersList")
  55. UpdateNetworkPeersList(peer.Conn, msg.PeersList)
  56. PropagatePeersList(peer)
  57. PrintPeersList()
  58. }
  59. msgCases["Data"] = func(peer Peer, msg Msg) {
  60. color.Yellow(msg.Type)
  61. color.Green(msg.Content)
  62. PropagateData(peer, "data")
  63. }
  64. fmt.Println(msgCases)
  65. }