mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-01-02 14:03:10 +00:00
feat: integrating waku_is_online function (#76)
This commit is contained in:
parent
d0fcd537de
commit
7240a5e3ef
@ -311,6 +311,10 @@ package waku
|
||||
resp);
|
||||
}
|
||||
|
||||
static void cGoWakuIsOnline(void* wakuCtx, void* resp) {
|
||||
waku_is_online(wakuCtx, (WakuCallBack) GoCallback, resp);
|
||||
}
|
||||
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
@ -1590,3 +1594,37 @@ func (n *WakuNode) DisconnectPeer(target *WakuNode) error {
|
||||
Debug("Successfully disconnected %s from %s", n.nodeName, target.nodeName)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (n *WakuNode) IsOnline() (bool, error) {
|
||||
if n == nil {
|
||||
err := errors.New("waku node is nil")
|
||||
Error("Failed to get online state %v", err)
|
||||
return false, err
|
||||
}
|
||||
|
||||
Debug("Querying online state for %v", n.nodeName)
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
var resp = C.allocResp(unsafe.Pointer(&wg))
|
||||
defer C.freeResp(resp)
|
||||
|
||||
wg.Add(1)
|
||||
C.cGoWakuIsOnline(n.wakuCtx, resp)
|
||||
wg.Wait()
|
||||
|
||||
if C.getRet(resp) == C.RET_OK {
|
||||
onlineStr := C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
|
||||
|
||||
if onlineStr == "true" {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
return false, nil
|
||||
|
||||
}
|
||||
|
||||
errMsg := "error IsOnline: " + C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
|
||||
Error("Failed to query online state for %v: %v", n.nodeName, errMsg)
|
||||
|
||||
return false, errors.New(errMsg)
|
||||
}
|
||||
|
||||
@ -964,3 +964,70 @@ func TestParallelPings(t *testing.T) {
|
||||
// Stop nodes
|
||||
require.NoError(t, dialerNode.Stop())
|
||||
}
|
||||
|
||||
func TestOnline(t *testing.T) {
|
||||
|
||||
clusterId := uint16(16)
|
||||
shardId := uint16(64)
|
||||
|
||||
tcpPort, udpPort, err := GetFreePortIfNeeded(0, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
// start node1
|
||||
wakuConfig1 := common.WakuConfig{
|
||||
Relay: true,
|
||||
LogLevel: "DEBUG",
|
||||
Discv5Discovery: false,
|
||||
ClusterID: clusterId,
|
||||
Shards: []uint16{shardId},
|
||||
Discv5UdpPort: udpPort,
|
||||
TcpPort: tcpPort,
|
||||
}
|
||||
|
||||
node1, err := NewWakuNode(&wakuConfig1, "node1")
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, node1.Start())
|
||||
|
||||
tcpPort, udpPort, err = GetFreePortIfNeeded(0, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
// start node2
|
||||
wakuConfig2 := common.WakuConfig{
|
||||
Relay: true,
|
||||
LogLevel: "DEBUG",
|
||||
Discv5Discovery: false,
|
||||
ClusterID: clusterId,
|
||||
Shards: []uint16{shardId},
|
||||
Discv5UdpPort: udpPort,
|
||||
TcpPort: tcpPort,
|
||||
}
|
||||
node2, err := NewWakuNode(&wakuConfig2, "node2")
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, node2.Start())
|
||||
multiaddr2, err := node2.ListenAddresses()
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, multiaddr2)
|
||||
require.True(t, len(multiaddr2) > 0)
|
||||
|
||||
// node1 dials node2 so they become peers
|
||||
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
|
||||
defer cancel()
|
||||
err = node1.Connect(ctx, multiaddr2[0])
|
||||
require.NoError(t, err)
|
||||
time.Sleep(1 * time.Second)
|
||||
// Check that both nodes now have one connected peer
|
||||
peerCount1, err := node1.GetNumConnectedPeers()
|
||||
require.NoError(t, err)
|
||||
require.True(t, peerCount1 == 1, "node1 should have 1 peer")
|
||||
peerCount2, err := node2.GetNumConnectedPeers()
|
||||
require.NoError(t, err)
|
||||
require.True(t, peerCount2 == 1, "node2 should have 1 peer")
|
||||
|
||||
isOnline, err := node1.IsOnline()
|
||||
require.NoError(t, err)
|
||||
require.True(t, isOnline, "node1 should be online")
|
||||
|
||||
// Stop nodes
|
||||
require.NoError(t, node1.Stop())
|
||||
require.NoError(t, node2.Stop())
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user