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

package p2plib
import (
"fmt"
"math/rand"
"time"
"github.com/fatih/color"
)
func InitializePeer(role, ip, port, restport, serverip, serverport string,
configuredMsgCases map[string]func(Peer, Msg)) ThisPeer {
//initialize some vars
rand.Seed(time.Now().Unix())
InitializeDefaultMsgCases(configuredMsgCases)
var tp ThisPeer
tp.Running = true
tp.RunningPeer.Role = role
tp.RunningPeer.Port = port
tp.RunningPeer.RESTPort = restport
tp.RunningPeer.ID = HashPeer(tp.RunningPeer)
tp.ID = tp.RunningPeer.ID
globalTP.PeersConnections.Outcoming.PeerID = tp.RunningPeer.ID
fmt.Println(tp.RunningPeer)
//outcomingPeersList.Peers = append(outcomingPeersList.Peers, peer.RunningPeer)
globalTP.PeersConnections.Outcoming = AppendPeerIfNoExist(globalTP.PeersConnections.Outcoming, tp.RunningPeer)
fmt.Println(globalTP.PeersConnections.Outcoming)
if tp.RunningPeer.Role == "server" {
go tp.AcceptPeers(tp.RunningPeer)
}
if tp.RunningPeer.Role == "client" {
var serverPeer Peer
serverPeer.IP = serverip
serverPeer.Port = serverport
serverPeer.Role = "server"
serverPeer.ID = HashPeer(serverPeer)
go tp.AcceptPeers(tp.RunningPeer)
ConnectToPeer(serverPeer)
}
globalTP = tp
return tp
}
func InitializeDefaultMsgCases(configuredMsgCases map[string]func(Peer, Msg)) {
//msgCases := make(map[string]func(Peer, Msg)) --> no, it's used the global
msgCases = make(map[string]func(Peer, Msg))
//get the user configured msgCases
for k, v := range configuredMsgCases {
msgCases[k] = v
}
msgCases["Hi"] = func(peer Peer, msg Msg) {
color.Yellow(msg.Type)
color.Green(msg.Content)
}
msgCases["PeersList"] = func(peer Peer, msg Msg) {
color.Blue("newPeerslist")
fmt.Println(msg.PeersList)
color.Red("PeersList")
UpdateNetworkPeersList(peer.Conn, msg.PeersList)
PropagatePeersList(peer)
PrintPeersList()
}
msgCases["Data"] = func(peer Peer, msg Msg) {
color.Yellow(msg.Type)
color.Green(msg.Content)
PropagateData(peer, "data")
}
fmt.Println(msgCases)
}