libwaku better params validation and a bit more clarity (#3005)

This commit is contained in:
Ivan FB 2024-08-29 22:57:23 +02:00 committed by GitHub
parent 236547ec7d
commit 191035ffd2
5 changed files with 77 additions and 80 deletions

View File

@ -427,6 +427,7 @@ cwaku_example: | build libwaku
./examples/cbindings/base64.c \ ./examples/cbindings/base64.c \
-lwaku -Lbuild/ \ -lwaku -Lbuild/ \
-pthread -ldl -lm \ -pthread -ldl -lm \
-lnegentropy -Lvendor/negentropy/cpp/ \
-lminiupnpc -Lvendor/nim-nat-traversal/vendor/miniupnp/miniupnpc/build/ \ -lminiupnpc -Lvendor/nim-nat-traversal/vendor/miniupnp/miniupnpc/build/ \
-lnatpmp -Lvendor/nim-nat-traversal/vendor/libnatpmp-upstream/ \ -lnatpmp -Lvendor/nim-nat-traversal/vendor/libnatpmp-upstream/ \
vendor/nim-libbacktrace/libbacktrace_wrapper.o \ vendor/nim-libbacktrace/libbacktrace_wrapper.o \
@ -439,6 +440,7 @@ cppwaku_example: | build libwaku
./examples/cpp/base64.cpp \ ./examples/cpp/base64.cpp \
-lwaku -Lbuild/ \ -lwaku -Lbuild/ \
-pthread -ldl -lm \ -pthread -ldl -lm \
-lnegentropy -Lvendor/negentropy/cpp/ \
-lminiupnpc -Lvendor/nim-nat-traversal/vendor/miniupnp/miniupnpc/build/ \ -lminiupnpc -Lvendor/nim-nat-traversal/vendor/miniupnp/miniupnpc/build/ \
-lnatpmp -Lvendor/nim-nat-traversal/vendor/libnatpmp-upstream/ \ -lnatpmp -Lvendor/nim-nat-traversal/vendor/libnatpmp-upstream/ \
vendor/nim-libbacktrace/libbacktrace_wrapper.o \ vendor/nim-libbacktrace/libbacktrace_wrapper.o \

View File

@ -1,3 +1,11 @@
import ./waku_thread/waku_thread
type WakuCallBack* = proc( type WakuCallBack* = proc(
callerRet: cint, msg: ptr cchar, len: csize_t, userData: pointer callerRet: cint, msg: ptr cchar, len: csize_t, userData: pointer
) {.cdecl, gcsafe, raises: [].} ) {.cdecl, gcsafe, raises: [].}
template checkLibwakuParams*(ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer) =
ctx[].userData = userData
if isNil(callback):
return RET_MISSING_CALLBACK

View File

@ -5,7 +5,7 @@
when defined(linux): when defined(linux):
{.passl: "-Wl,-soname,libwaku.so".} {.passl: "-Wl,-soname,libwaku.so".}
import std/[json, sequtils, atomics, times, strformat, options, atomics, strutils, os] import std/[json, sequtils, atomics, strformat, options, atomics]
import chronicles, chronos import chronicles, chronos
import import
waku/common/base64, waku/common/base64,
@ -52,7 +52,7 @@ template foreignThreadGc(body: untyped) =
when declared(tearDownForeignThreadGc): when declared(tearDownForeignThreadGc):
tearDownForeignThreadGc() tearDownForeignThreadGc()
proc relayEventCallback(ctx: ptr Context): WakuRelayHandler = proc relayEventCallback(ctx: ptr WakuContext): WakuRelayHandler =
return proc( return proc(
pubsubTopic: PubsubTopic, msg: WakuMessage pubsubTopic: PubsubTopic, msg: WakuMessage
): Future[system.void] {.async.} = ): Future[system.void] {.async.} =
@ -144,10 +144,9 @@ proc waku_new(
return ctx return ctx
proc waku_destroy( proc waku_destroy(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
if isNil(callback): checkLibwakuParams(ctx, callback, userData)
return RET_MISSING_CALLBACK
waku_thread.stopWakuThread(ctx).isOkOr: waku_thread.stopWakuThread(ctx).isOkOr:
foreignThreadGc: foreignThreadGc:
@ -158,12 +157,9 @@ proc waku_destroy(
return RET_OK return RET_OK
proc waku_version( proc waku_version(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
foreignThreadGc: foreignThreadGc:
callback( callback(
@ -176,13 +172,13 @@ proc waku_version(
return RET_OK return RET_OK
proc waku_set_event_callback( proc waku_set_event_callback(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
) {.dynlib, exportc.} = ) {.dynlib, exportc.} =
ctx[].eventCallback = cast[pointer](callback) ctx[].eventCallback = cast[pointer](callback)
ctx[].eventUserData = userData ctx[].eventUserData = userData
proc waku_content_topic( proc waku_content_topic(
ctx: ptr Context, ctx: ptr WakuContext,
appName: cstring, appName: cstring,
appVersion: cuint, appVersion: cuint,
contentTopicName: cstring, contentTopicName: cstring,
@ -192,10 +188,7 @@ proc waku_content_topic(
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
# https://rfc.vac.dev/spec/36/#extern-char-waku_content_topicchar-applicationname-unsigned-int-applicationversion-char-contenttopicname-char-encoding # https://rfc.vac.dev/spec/36/#extern-char-waku_content_topicchar-applicationname-unsigned-int-applicationversion-char-contenttopicname-char-encoding
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
let appStr = appName.alloc() let appStr = appName.alloc()
let ctnStr = contentTopicName.alloc() let ctnStr = contentTopicName.alloc()
@ -213,14 +206,11 @@ proc waku_content_topic(
return RET_OK return RET_OK
proc waku_pubsub_topic( proc waku_pubsub_topic(
ctx: ptr Context, topicName: cstring, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, topicName: cstring, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc, cdecl.} = ): cint {.dynlib, exportc, cdecl.} =
# https://rfc.vac.dev/spec/36/#extern-char-waku_pubsub_topicchar-name-char-encoding # https://rfc.vac.dev/spec/36/#extern-char-waku_pubsub_topicchar-name-char-encoding
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
let topicNameStr = topicName.alloc() let topicNameStr = topicName.alloc()
@ -234,14 +224,11 @@ proc waku_pubsub_topic(
return RET_OK return RET_OK
proc waku_default_pubsub_topic( proc waku_default_pubsub_topic(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
# https://rfc.vac.dev/spec/36/#extern-char-waku_default_pubsub_topic # https://rfc.vac.dev/spec/36/#extern-char-waku_default_pubsub_topic
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
callback( callback(
RET_OK, RET_OK,
@ -253,7 +240,7 @@ proc waku_default_pubsub_topic(
return RET_OK return RET_OK
proc waku_relay_publish( proc waku_relay_publish(
ctx: ptr Context, ctx: ptr WakuContext,
pubSubTopic: cstring, pubSubTopic: cstring,
jsonWakuMessage: cstring, jsonWakuMessage: cstring,
timeoutMs: cuint, timeoutMs: cuint,
@ -262,10 +249,7 @@ proc waku_relay_publish(
): cint {.dynlib, exportc, cdecl.} = ): cint {.dynlib, exportc, cdecl.} =
# https://rfc.vac.dev/spec/36/#extern-char-waku_relay_publishchar-messagejson-char-pubsubtopic-int-timeoutms # https://rfc.vac.dev/spec/36/#extern-char-waku_relay_publishchar-messagejson-char-pubsubtopic-int-timeoutms
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
let jwm = jsonWakuMessage.alloc() let jwm = jsonWakuMessage.alloc()
var jsonMessage: JsonMessage var jsonMessage: JsonMessage
@ -315,9 +299,9 @@ proc waku_relay_publish(
return RET_OK return RET_OK
proc waku_start( proc waku_start(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
## TODO: handle the error ## TODO: handle the error
discard waku_thread.sendRequestToWakuThread( discard waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -326,9 +310,10 @@ proc waku_start(
) )
proc waku_stop( proc waku_stop(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
## TODO: handle the error ## TODO: handle the error
discard waku_thread.sendRequestToWakuThread( discard waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -337,9 +322,12 @@ proc waku_stop(
) )
proc waku_relay_subscribe( proc waku_relay_subscribe(
ctx: ptr Context, pubSubTopic: cstring, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext,
pubSubTopic: cstring,
callback: WakuCallBack,
userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let pst = pubSubTopic.alloc() let pst = pubSubTopic.alloc()
var cb = relayEventCallback(ctx) var cb = relayEventCallback(ctx)
@ -360,9 +348,12 @@ proc waku_relay_subscribe(
return RET_OK return RET_OK
proc waku_relay_unsubscribe( proc waku_relay_unsubscribe(
ctx: ptr Context, pubSubTopic: cstring, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext,
pubSubTopic: cstring,
callback: WakuCallBack,
userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let pst = pubSubTopic.alloc() let pst = pubSubTopic.alloc()
@ -385,9 +376,12 @@ proc waku_relay_unsubscribe(
return RET_OK return RET_OK
proc waku_relay_get_num_connected_peers( proc waku_relay_get_num_connected_peers(
ctx: ptr Context, pubSubTopic: cstring, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext,
pubSubTopic: cstring,
callback: WakuCallBack,
userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let pst = pubSubTopic.alloc() let pst = pubSubTopic.alloc()
defer: defer:
@ -414,9 +408,12 @@ proc waku_relay_get_num_connected_peers(
return RET_OK return RET_OK
proc waku_relay_get_num_peers_in_mesh( proc waku_relay_get_num_peers_in_mesh(
ctx: ptr Context, pubSubTopic: cstring, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext,
pubSubTopic: cstring,
callback: WakuCallBack,
userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let pst = pubSubTopic.alloc() let pst = pubSubTopic.alloc()
defer: defer:
@ -443,16 +440,13 @@ proc waku_relay_get_num_peers_in_mesh(
return RET_OK return RET_OK
proc waku_lightpush_publish( proc waku_lightpush_publish(
ctx: ptr Context, ctx: ptr WakuContext,
pubSubTopic: cstring, pubSubTopic: cstring,
jsonWakuMessage: cstring, jsonWakuMessage: cstring,
callback: WakuCallBack, callback: WakuCallBack,
userData: pointer, userData: pointer,
): cint {.dynlib, exportc, cdecl.} = ): cint {.dynlib, exportc, cdecl.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
let jwm = jsonWakuMessage.alloc() let jwm = jsonWakuMessage.alloc()
let pst = pubSubTopic.alloc() let pst = pubSubTopic.alloc()
@ -498,13 +492,13 @@ proc waku_lightpush_publish(
return RET_OK return RET_OK
proc waku_connect( proc waku_connect(
ctx: ptr Context, ctx: ptr WakuContext,
peerMultiAddr: cstring, peerMultiAddr: cstring,
timeoutMs: cuint, timeoutMs: cuint,
callback: WakuCallBack, callback: WakuCallBack,
userData: pointer, userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let connRes = waku_thread.sendRequestToWakuThread( let connRes = waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -521,22 +515,19 @@ proc waku_connect(
return RET_OK return RET_OK
proc waku_store_query( proc waku_store_query(
ctx: ptr Context, ctx: ptr WakuContext,
jsonQuery: cstring, jsonQuery: cstring,
peerAddr: cstring, peerAddr: cstring,
timeoutMs: cint, timeoutMs: cint,
callback: WakuCallBack, callback: WakuCallBack,
userData: pointer, userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
if isNil(callback):
return RET_MISSING_CALLBACK
let sendReqRes = waku_thread.sendRequestToWakuThread( let sendReqRes = waku_thread.sendRequestToWakuThread(
ctx, ctx,
RequestType.STORE, RequestType.STORE,
JsonStoreQueryRequest.createShared(jsonQuery, peerAddr, timeoutMs, callback), JsonStoreQueryRequest.createShared(jsonQuery, peerAddr, timeoutMs),
) )
if sendReqRes.isErr(): if sendReqRes.isErr():
@ -549,9 +540,9 @@ proc waku_store_query(
return RET_OK return RET_OK
proc waku_listen_addresses( proc waku_listen_addresses(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let connRes = waku_thread.sendRequestToWakuThread( let connRes = waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -568,14 +559,14 @@ proc waku_listen_addresses(
return RET_OK return RET_OK
proc waku_dns_discovery( proc waku_dns_discovery(
ctx: ptr Context, ctx: ptr WakuContext,
entTreeUrl: cstring, entTreeUrl: cstring,
nameDnsServer: cstring, nameDnsServer: cstring,
timeoutMs: cint, timeoutMs: cint,
callback: WakuCallBack, callback: WakuCallBack,
userData: pointer, userData: pointer,
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let bootstrapPeers = waku_thread.sendRequestToWakuThread( let bootstrapPeers = waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -593,11 +584,11 @@ proc waku_dns_discovery(
return RET_OK return RET_OK
proc waku_discv5_update_bootnodes( proc waku_discv5_update_bootnodes(
ctx: ptr Context, bootnodes: cstring, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, bootnodes: cstring, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
## Updates the bootnode list used for discovering new peers via DiscoveryV5 ## Updates the bootnode list used for discovering new peers via DiscoveryV5
## bootnodes - JSON array containing the bootnode ENRs i.e. `["enr:...", "enr:..."]` ## bootnodes - JSON array containing the bootnode ENRs i.e. `["enr:...", "enr:..."]`
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let resp = waku_thread.sendRequestToWakuThread( let resp = waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -615,9 +606,9 @@ proc waku_discv5_update_bootnodes(
return RET_OK return RET_OK
proc waku_get_my_enr( proc waku_get_my_enr(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let connRes = waku_thread.sendRequestToWakuThread( let connRes = waku_thread.sendRequestToWakuThread(
ctx, ctx,
@ -634,9 +625,9 @@ proc waku_get_my_enr(
return RET_OK return RET_OK
proc waku_start_discv5( proc waku_start_discv5(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let resp = waku_thread.sendRequestToWakuThread( let resp = waku_thread.sendRequestToWakuThread(
ctx, RequestType.DISCOVERY, DiscoveryRequest.createDiscV5StartRequest() ctx, RequestType.DISCOVERY, DiscoveryRequest.createDiscV5StartRequest()
@ -651,9 +642,9 @@ proc waku_start_discv5(
return RET_OK return RET_OK
proc waku_stop_discv5( proc waku_stop_discv5(
ctx: ptr Context, callback: WakuCallBack, userData: pointer ctx: ptr WakuContext, callback: WakuCallBack, userData: pointer
): cint {.dynlib, exportc.} = ): cint {.dynlib, exportc.} =
ctx[].userData = userData checkLibwakuParams(ctx, callback, userData)
let resp = waku_thread.sendRequestToWakuThread( let resp = waku_thread.sendRequestToWakuThread(
ctx, RequestType.DISCOVERY, DiscoveryRequest.createDiscV5StopRequest() ctx, RequestType.DISCOVERY, DiscoveryRequest.createDiscV5StopRequest()

View File

@ -3,7 +3,6 @@ import chronos, results
import import
../../../../../waku/factory/waku, ../../../../../waku/factory/waku,
../../../../alloc, ../../../../alloc,
../../../../callback,
../../../../../waku/waku_core/peers, ../../../../../waku/waku_core/peers,
../../../../../waku/waku_core/time, ../../../../../waku/waku_core/time,
../../../../../waku/waku_core/message/digest, ../../../../../waku/waku_core/message/digest,
@ -18,7 +17,6 @@ type JsonStoreQueryRequest* = object
jsonQuery: cstring jsonQuery: cstring
peerAddr: cstring peerAddr: cstring
timeoutMs: cint timeoutMs: cint
storeCallback: WakuCallBack
type StoreRequest* = object type StoreRequest* = object
operation: StoreReqType operation: StoreReqType
@ -99,13 +97,11 @@ proc createShared*(
jsonQuery: cstring, jsonQuery: cstring,
peerAddr: cstring, peerAddr: cstring,
timeoutMs: cint, timeoutMs: cint,
storeCallback: WakuCallBack = nil,
): ptr type T = ): ptr type T =
var ret = createShared(T) var ret = createShared(T)
ret[].timeoutMs = timeoutMs ret[].timeoutMs = timeoutMs
ret[].jsonQuery = jsonQuery.alloc() ret[].jsonQuery = jsonQuery.alloc()
ret[].peerAddr = peerAddr.alloc() ret[].peerAddr = peerAddr.alloc()
ret[].storeCallback = storeCallback
return ret return ret
proc destroyShared(self: ptr JsonStoreQueryRequest) = proc destroyShared(self: ptr JsonStoreQueryRequest) =

View File

@ -9,8 +9,8 @@ import
./inter_thread_communication/waku_thread_request, ./inter_thread_communication/waku_thread_request,
./inter_thread_communication/waku_thread_response ./inter_thread_communication/waku_thread_response
type Context* = object type WakuContext* = object
thread: Thread[(ptr Context)] thread: Thread[(ptr WakuContext)]
reqChannel: ChannelSPSCSingle[ptr InterThreadRequest] reqChannel: ChannelSPSCSingle[ptr InterThreadRequest]
reqSignal: ThreadSignalPtr reqSignal: ThreadSignalPtr
respChannel: ChannelSPSCSingle[ptr InterThreadResponse] respChannel: ChannelSPSCSingle[ptr InterThreadResponse]
@ -26,7 +26,7 @@ const versionString = "version / git commit hash: " & waku.git_version
# TODO: this should be part of the context so multiple instances can be executed # TODO: this should be part of the context so multiple instances can be executed
var running: Atomic[bool] var running: Atomic[bool]
proc runWaku(ctx: ptr Context) {.async.} = proc runWaku(ctx: ptr WakuContext) {.async.} =
## This is the worker body. This runs the Waku node ## This is the worker body. This runs the Waku node
## and attends library user requests (stop, connect_to, etc.) ## and attends library user requests (stop, connect_to, etc.)
info "Starting Waku", version = versionString info "Starting Waku", version = versionString
@ -49,14 +49,14 @@ proc runWaku(ctx: ptr Context) {.async.} =
discard ctx.respChannel.trySend(threadSafeResp) discard ctx.respChannel.trySend(threadSafeResp)
discard ctx.respSignal.fireSync() discard ctx.respSignal.fireSync()
proc run(ctx: ptr Context) {.thread.} = proc run(ctx: ptr WakuContext) {.thread.} =
## Launch waku worker ## Launch waku worker
waitFor runWaku(ctx) waitFor runWaku(ctx)
proc createWakuThread*(): Result[ptr Context, string] = proc createWakuThread*(): Result[ptr WakuContext, string] =
## This proc is called from the main thread and it creates ## This proc is called from the main thread and it creates
## the Waku working thread. ## the Waku working thread.
var ctx = createShared(Context, 1) var ctx = createShared(WakuContext, 1)
ctx.reqSignal = ThreadSignalPtr.new().valueOr: ctx.reqSignal = ThreadSignalPtr.new().valueOr:
return err("couldn't create reqSignal ThreadSignalPtr") return err("couldn't create reqSignal ThreadSignalPtr")
ctx.respSignal = ThreadSignalPtr.new().valueOr: ctx.respSignal = ThreadSignalPtr.new().valueOr:
@ -74,7 +74,7 @@ proc createWakuThread*(): Result[ptr Context, string] =
return ok(ctx) return ok(ctx)
proc stopWakuThread*(ctx: ptr Context): Result[void, string] = proc stopWakuThread*(ctx: ptr WakuContext): Result[void, string] =
running.store(false) running.store(false)
let fireRes = ctx.reqSignal.fireSync() let fireRes = ctx.reqSignal.fireSync()
if fireRes.isErr(): if fireRes.isErr():
@ -86,7 +86,7 @@ proc stopWakuThread*(ctx: ptr Context): Result[void, string] =
return ok() return ok()
proc sendRequestToWakuThread*( proc sendRequestToWakuThread*(
ctx: ptr Context, reqType: RequestType, reqContent: pointer ctx: ptr WakuContext, reqType: RequestType, reqContent: pointer
): Result[string, string] = ): Result[string, string] =
let req = InterThreadRequest.createShared(reqType, reqContent) let req = InterThreadRequest.createShared(reqType, reqContent)
## Sending the request ## Sending the request