From 94cd2f88b4425c6fd37c6079a537c3a19c100f05 Mon Sep 17 00:00:00 2001 From: gabrielmer <101006718+gabrielmer@users.noreply.github.com> Date: Fri, 30 May 2025 17:47:06 +0200 Subject: [PATCH] chore: exposing online state in libwaku (#3433) --- library/libwaku.h | 4 ++++ library/libwaku.nim | 14 ++++++++++++++ .../requests/peer_manager_request.nim | 3 +++ 3 files changed, 21 insertions(+) diff --git a/library/libwaku.h b/library/libwaku.h index 3c15b36f9..7a16c9d65 100644 --- a/library/libwaku.h +++ b/library/libwaku.h @@ -232,6 +232,10 @@ int waku_ping_peer(void* ctx, WakuCallBack callback, void* userData); +int waku_is_online(void* ctx, + WakuCallBack callback, + void* userData); + #ifdef __cplusplus } #endif diff --git a/library/libwaku.nim b/library/libwaku.nim index 48df3e2c6..5d8252225 100644 --- a/library/libwaku.nim +++ b/library/libwaku.nim @@ -842,5 +842,19 @@ proc waku_ping_peer( userData, ) +proc waku_is_online( + ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer +): cint {.dynlib, exportc.} = + initializeLibrary() + checkLibwakuParams(ctx, callback, userData) + + handleRequest( + ctx, + RequestType.PEER_MANAGER, + PeerManagementRequest.createShared(PeerManagementMsgType.IS_ONLINE), + callback, + userData, + ) + ### End of exported procs ################################################################################ diff --git a/library/waku_thread/inter_thread_communication/requests/peer_manager_request.nim b/library/waku_thread/inter_thread_communication/requests/peer_manager_request.nim index 1e5202891..e68e66afe 100644 --- a/library/waku_thread/inter_thread_communication/requests/peer_manager_request.nim +++ b/library/waku_thread/inter_thread_communication/requests/peer_manager_request.nim @@ -15,6 +15,7 @@ type PeerManagementMsgType* {.pure.} = enum DIAL_PEER DIAL_PEER_BY_ID GET_CONNECTED_PEERS + IS_ONLINE type PeerManagementRequest* = object operation: PeerManagementMsgType @@ -144,5 +145,7 @@ proc process*( (inPeerIds, outPeerIds) = waku.node.peerManager.connectedPeers() connectedPeerids = concat(inPeerIds, outPeerIds) return ok(connectedPeerids.mapIt($it).join(",")) + of IS_ONLINE: + return ok($waku.node.peerManager.isOnline()) return ok("")