// connect establishes gossip sessions with the given addresses, // handing them off to peerManager once established. func connect(addrs []string, peerManager gossip.PeerManager) { for _, addr := range addrs { conn, err := net.Dial("tcp", addr) if err != nil { log.Fatalf("Error dialing initial peer %s: %s", addr, err) } peer := NewPeer(conn) if err := peerManager.AddPeer(peer); err != nil { log.Fatalf("Error adding initial peer %s: %s", peer, err) } } }
// listen listens on the given address, // establishing gossip sessions with incoming connections, // then handing them off to peerManager func listen(addr string, peerManager gossip.PeerManager) { listener, err := net.Listen("tcp", addr) if err != nil { panic(err) } defer listener.Close() for { conn, err := listener.Accept() if err != nil { log.Printf("Error accepting connection: %s", err) } peer := NewPeer(conn) if err := peerManager.AddPeer(peer); err != nil { log.Printf("Error adding new peer %s: %s", peer, err) } } }