summaryrefslogtreecommitdiff
path: root/internal/network
diff options
context:
space:
mode:
Diffstat (limited to 'internal/network')
-rw-r--r--internal/network/network.go7
-rw-r--r--internal/network/network_test.go8
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"))