This commit is contained in:
Gabriel mermelstein 2025-06-12 11:40:50 +02:00
parent 48d4fac4a0
commit 36e47fda0d
No known key found for this signature in database
GPG Key ID: 82B8134785FEAE0D

View File

@ -35,27 +35,32 @@ template checkLibsdsParams*(
return RET_MISSING_CALLBACK
template callEventCallback(ctx: ptr SdsContext, eventName: string, body: untyped) =
echo "------------- callEventCallback 1"
if isNil(ctx[].eventCallback):
error eventName & " - eventCallback is nil"
return
echo "------------- callEventCallback 2"
if isNil(ctx[].eventUserData):
error eventName & " - eventUserData is nil"
return
foreignThreadGc:
try:
echo "------------- callEventCallback 3"
let event = body
cast[SdsCallBack](ctx[].eventCallback)(
RET_OK, unsafeAddr event[0], cast[csize_t](len(event)), ctx[].eventUserData
)
except Exception, CatchableError:
echo "------------- callEventCallback 4"
let msg =
"Exception " & eventName & " when calling 'eventCallBack': " &
getCurrentExceptionMsg()
cast[SdsCallBack](ctx[].eventCallback)(
RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), ctx[].eventUserData
)
echo "------------- callEventCallback 5"
proc handleRequest(
ctx: ptr SdsContext,
@ -64,11 +69,15 @@ proc handleRequest(
callback: SdsCallBack,
userData: pointer,
): cint =
echo "---------------- handleRequest 1"
sds_thread.sendRequestToSdsThread(ctx, requestType, content, callback, userData).isOkOr:
echo "---------------- handleRequest 2"
let msg = "libsds error: " & $error
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
echo "---------------- handleRequest 3"
return RET_ERR
echo "---------------- handleRequest 4"
return RET_OK
proc onMessageReady(ctx: ptr SdsContext): MessageReadyCallback =
@ -133,6 +142,7 @@ proc initializeLibrary() {.exported.} =
proc NewReliabilityManager(
channelId: cstring, callback: SdsCallBack, userData: pointer
): pointer {.dynlib, exportc, cdecl.} =
echo "------------- NewReliabilityManager 1"
initializeLibrary()
## Creates a new instance of the Reliability Manager.
@ -173,6 +183,7 @@ proc NewReliabilityManager(
proc SetEventCallback(
ctx: ptr SdsContext, callback: SdsCallBack, userData: pointer
) {.dynlib, exportc.} =
echo "------------- SetEventCallback 1"
initializeLibrary()
ctx[].eventCallback = cast[pointer](callback)
ctx[].eventUserData = userData
@ -180,6 +191,7 @@ proc SetEventCallback(
proc CleanupReliabilityManager(
ctx: ptr SdsContext, callback: SdsCallBack, userData: pointer
): cint {.dynlib, exportc.} =
echo "------------- CleanupReliabilityManager 1"
initializeLibrary()
checkLibsdsParams(ctx, callback, userData)
@ -196,6 +208,7 @@ proc CleanupReliabilityManager(
proc ResetReliabilityManager(
ctx: ptr SdsContext, callback: SdsCallBack, userData: pointer
): cint {.dynlib, exportc.} =
echo "------------- ResetReliabilityManager 1"
initializeLibrary()
checkLibsdsParams(ctx, callback, userData)
handleRequest(
@ -214,19 +227,25 @@ proc WrapOutgoingMessage(
callback: SdsCallBack,
userData: pointer,
): cint {.dynlib, exportc.} =
echo "------------- WrapOutgoingMessage 1"
initializeLibrary()
echo "------------- WrapOutgoingMessage 2"
checkLibsdsParams(ctx, callback, userData)
echo "------------- WrapOutgoingMessage 3"
if message == nil and messageLen > 0:
echo "------------- WrapOutgoingMessage 4"
let msg = "libsds error: " & "message pointer is NULL but length > 0"
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
return RET_ERR
if messageId == nil:
echo "------------- WrapOutgoingMessage 5"
let msg = "libsds error: " & "message ID pointer is NULL"
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
return RET_ERR
echo "------------- WrapOutgoingMessage 6"
handleRequest(
ctx,
RequestType.MESSAGE,
@ -244,14 +263,19 @@ proc UnwrapReceivedMessage(
callback: SdsCallBack,
userData: pointer,
): cint {.dynlib, exportc.} =
echo "------------- UnwrapReceivedMessage 1"
initializeLibrary()
echo "------------- UnwrapReceivedMessage 2"
checkLibsdsParams(ctx, callback, userData)
echo "------------- UnwrapReceivedMessage 3"
if message == nil and messageLen > 0:
echo "------------- UnwrapReceivedMessage 4"
let msg = "libsds error: " & "message pointer is NULL but length > 0"
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
return RET_ERR
echo "------------- UnwrapReceivedMessage 5"
handleRequest(
ctx,
RequestType.MESSAGE,
@ -272,11 +296,14 @@ proc MarkDependenciesMet(
initializeLibrary()
checkLibsdsParams(ctx, callback, userData)
echo "------------- MarkDependenciesMet 1"
if messageIds == nil and count > 0:
echo "------------- MarkDependenciesMet 2"
let msg = "libsds error: " & "MessageIDs pointer is NULL but count > 0"
callback(RET_ERR, unsafeAddr msg[0], cast[csize_t](len(msg)), userData)
return RET_ERR
echo "------------- MarkDependenciesMet 3"
handleRequest(
ctx,
RequestType.DEPENDENCIES,
@ -290,8 +317,11 @@ proc MarkDependenciesMet(
proc StartPeriodicTasks(
ctx: ptr SdsContext, callback: SdsCallBack, userData: pointer
): cint {.dynlib, exportc.} =
echo "------------- StartPeriodicTasks 1"
initializeLibrary()
echo "------------- StartPeriodicTasks 2"
checkLibsdsParams(ctx, callback, userData)
echo "------------- StartPeriodicTasks 3"
handleRequest(
ctx,
RequestType.LIFECYCLE,