From 7609aa36b0db26a1ac60ab24469b64503925b73b Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 10 Apr 2025 14:25:53 +0300 Subject: [PATCH] adding reset function --- library/libsds.h | 2 ++ library/libsds.nim | 12 ++++++++++++ .../requests/sds_lifecycle_request.nim | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/library/libsds.h b/library/libsds.h index 00b4a05..8f6a57f 100644 --- a/library/libsds.h +++ b/library/libsds.h @@ -30,6 +30,8 @@ void SetEventCallback(void* ctx, SdsCallBack callback, void* userData); int CleanupReliabilityManager(void* ctx, SdsCallBack callback, void* userData); +int ResetReliabilityManager(void* ctx, SdsCallBack callback, void* userData); + #ifdef __cplusplus } diff --git a/library/libsds.nim b/library/libsds.nim index 1d40d10..e85f12b 100644 --- a/library/libsds.nim +++ b/library/libsds.nim @@ -163,5 +163,17 @@ proc CleanupReliabilityManager( return RET_OK +proc ResetReliabilityManager( + ctx: ptr SdsContext, callback: SdsCallBack, userData: pointer +): cint {.dynlib, exportc.} = + checkLibsdsParams(ctx, callback, userData) + handleRequest( + ctx, + RequestType.LIFECYCLE, + SdsLifecycleRequest.createShared(SdsLifecycleMsgType.RESET_RELIABILITY_MANAGER), + callback, + userData, + ) + ### End of exported procs ################################################################################ diff --git a/library/sds_thread/inter_thread_communication/requests/sds_lifecycle_request.nim b/library/sds_thread/inter_thread_communication/requests/sds_lifecycle_request.nim index 4ade389..1794bd2 100644 --- a/library/sds_thread/inter_thread_communication/requests/sds_lifecycle_request.nim +++ b/library/sds_thread/inter_thread_communication/requests/sds_lifecycle_request.nim @@ -6,6 +6,7 @@ import ../../../../src/[reliability_utils, reliability, message] type SdsLifecycleMsgType* = enum CREATE_RELIABILITY_MANAGER + RESET_RELIABILITY_MANAGER type SdsLifecycleRequest* = object operation: SdsLifecycleMsgType @@ -58,5 +59,8 @@ proc process*( rm[] = (await createReliabilityManager(self.channelId)).valueOr: error "CREATE_RELIABILITY_MANAGER failed", error = error return err("error processing CREATE_RELIABILITY_MANAGER request: " & $error) + of RESET_RELIABILITY_MANAGER: + resetReliabilityManager(rm[]).isOkOr: + return err("error processing RESET_RELIABILITY_MANAGER request: " & $error) return ok("")