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("")