diff options
Diffstat (limited to 'internal/network')
-rw-r--r-- | internal/network/network.go | 7 | ||||
-rw-r--r-- | internal/network/network_test.go | 8 |
2 files changed, 8 insertions, 7 deletions
diff --git a/internal/network/network.go b/internal/network/network.go index 247ce70..8b6c686 100644 --- a/internal/network/network.go +++ b/internal/network/network.go @@ -44,7 +44,7 @@ type TCPNetwork struct { } // initializes a TCP peer -func NewTCPNetwork(localID, localIP string, localPort int) *TCPNetwork { +func NewTCPNetwork(localID, localIP string, localPort int, onReceive func()) *TCPNetwork { n := &TCPNetwork{ localPeer: PeerInfo{ID: localID, IP: localIP, Port: localPort}, connections: make(map[string]net.Conn), @@ -54,7 +54,7 @@ func NewTCPNetwork(localID, localIP string, localPort int) *TCPNetwork { logger: logger.InitLogger("rahanna.log"), } - go n.startServer() + go n.startServer(onReceive) return n } @@ -65,7 +65,7 @@ func (n *TCPNetwork) AddPeer(remoteID string, remoteIP string, remotePort int) { } // startServer starts a TCP server to accept connections. -func (n *TCPNetwork) startServer() { +func (n *TCPNetwork) startServer(callback func()) { address := fmt.Sprintf("%s:%d", n.localPeer.IP, n.localPeer.Port) listener, err := net.Listen("tcp", address) if err != nil { @@ -85,6 +85,7 @@ func (n *TCPNetwork) startServer() { remoteAddr := conn.RemoteAddr().String() n.Lock() n.connections[remoteAddr] = conn + callback() n.Unlock() n.isConnected = true n.retryDelay = 2 * time.Second diff --git a/internal/network/network_test.go b/internal/network/network_test.go index 9dbc416..4f3211c 100644 --- a/internal/network/network_test.go +++ b/internal/network/network_test.go @@ -12,12 +12,12 @@ func TestPeerToPeerCommunication(t *testing.T) { // Create a mock of the first peer (peer-1) peer1IP := "127.0.0.1" peer1Port := 9001 - peer1 := NewTCPNetwork("peer-1", peer1IP, peer1Port) + peer1 := NewTCPNetwork("peer-1", peer1IP, peer1Port, func() {}) // Create a mock of the second peer (peer-2) peer2IP := "127.0.0.1" peer2Port := 9002 - peer2 := NewTCPNetwork("peer-2", peer2IP, peer2Port) + peer2 := NewTCPNetwork("peer-2", peer2IP, peer2Port, func() {}) // Register a message handler on peer-2 to receive the message from peer-1 peer2.RegisterHandler("chat", func(msg Message) { @@ -43,8 +43,8 @@ func TestPeerToPeerCommunication(t *testing.T) { // TestSendFailure tests if sending a message fails when no connection exists. func TestSendFailure(t *testing.T) { - peer1 := NewTCPNetwork("peer-1", "127.0.0.1", 9001) - _ = NewTCPNetwork("peer-2", "127.0.0.1", 9002) + peer1 := NewTCPNetwork("peer-1", "127.0.0.1", 9001, func() {}) + _ = NewTCPNetwork("peer-2", "127.0.0.1", 9002, func() {}) // Attempt to send a message without establishing a connection first err := peer1.Send("peer-2", "chat", []byte("Message without connection")) |