From cff40624102d463071e595d766c6cb33e82507e7 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Wed, 9 Apr 2025 17:49:20 +0300 Subject: [PATCH] fixing compilation errors --- library/libsds.nim | 3 ++- .../requests/sds_lifecycle_request.nim | 12 ++++++++---- .../sds_thread_request.nim | 3 ++- library/sds_thread/sds_thread.nim | 5 ++++- src/reliability_utils.nim | 6 ++++-- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/library/libsds.nim b/library/libsds.nim index 8a35e3b..1671b53 100644 --- a/library/libsds.nim +++ b/library/libsds.nim @@ -5,13 +5,14 @@ when defined(linux): {.passl: "-Wl,-soname,libsds.so".} -import std/[locks, typetraits, tables] # Added tables +import std/[locks, typetraits, tables, atomics] # Added tables import chronos import results import ./sds_thread/sds_thread, ./alloc, ./ffi_types, + ./sds_thread/inter_thread_communication/sds_thread_request, ../src/[reliability, reliability_utils, message] ################################################################################ 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 58ca559..4ade389 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 @@ -2,6 +2,7 @@ import std/[options, json, strutils, net] import chronos, chronicles, results, confutils, confutils/std/net import ../../../alloc +import ../../../../src/[reliability_utils, reliability, message] type SdsLifecycleMsgType* = enum CREATE_RELIABILITY_MANAGER @@ -11,7 +12,7 @@ type SdsLifecycleRequest* = object channelId: cstring proc createShared*( - T: type SdsLifecycleRequest, op: SdsLifecycleMsgType, configJson: cstring = "" + T: type SdsLifecycleRequest, op: SdsLifecycleMsgType, channelId: cstring = "" ): ptr type T = var ret = createShared(T) ret[].operation = op @@ -22,7 +23,9 @@ proc destroyShared(self: ptr SdsLifecycleRequest) = deallocShared(self[].channelId) deallocShared(self) -proc createReliabilityManager(channelId: cstring): Result[ReliabilityManager, string] = +proc createReliabilityManager( + channelIdCStr: cstring +): Future[Result[ReliabilityManager, string]] {.async.} = let channelId = $channelIdCStr if channelId.len == 0: error "Failed creating ReliabilityManager: Channel ID cannot be empty" @@ -32,14 +35,15 @@ proc createReliabilityManager(channelId: cstring): Result[ReliabilityManager, st error "Failed creating reliability manager", error = error return err("Failed creating reliability manager: " & $error) - rm.onMessageReady = proc(msgId: MessageID) = + # TODO: instead of this, create events + #[ rm.onMessageReady = proc(msgId: MessageID) = nimMessageReadyCallback(rm, msgId) rm.onMessageSent = proc(msgId: MessageID) = nimMessageSentCallback(rm, msgId) rm.onMissingDependencies = proc(msgId: MessageID, deps: seq[MessageID]) = nimMissingDependenciesCallback(rm, msgId, deps) rm.onPeriodicSync = proc() = - nimPeriodicSyncCallback(rm) + nimPeriodicSyncCallback(rm) ]# return ok(rm) diff --git a/library/sds_thread/inter_thread_communication/sds_thread_request.nim b/library/sds_thread/inter_thread_communication/sds_thread_request.nim index 64c908f..855e77b 100644 --- a/library/sds_thread/inter_thread_communication/sds_thread_request.nim +++ b/library/sds_thread/inter_thread_communication/sds_thread_request.nim @@ -4,7 +4,8 @@ import std/json, results import chronos, chronos/threadsync -import ../../ffi_types, ./requests/sds_lifecycle_request +import + ../../ffi_types, ./requests/sds_lifecycle_request, ../../../src/[reliability_utils] type RequestType* {.pure.} = enum LIFECYCLE diff --git a/library/sds_thread/sds_thread.nim b/library/sds_thread/sds_thread.nim index 3cde969..4a2cce5 100644 --- a/library/sds_thread/sds_thread.nim +++ b/library/sds_thread/sds_thread.nim @@ -4,7 +4,10 @@ import std/[options, atomics, os, net, locks] import chronicles, chronos, chronos/threadsync, taskpools/channels_spsc_single, results -import ../ffi_types +import + ../ffi_types, + ./inter_thread_communication/sds_thread_request, + ../../src/[reliability_utils] type SdsContext* = object thread: Thread[(ptr SdsContext)] diff --git a/src/reliability_utils.nim b/src/reliability_utils.nim index 33b47e6..ec576dc 100644 --- a/src/reliability_utils.nim +++ b/src/reliability_utils.nim @@ -51,7 +51,7 @@ proc defaultConfig*(): ReliabilityConfig = resendInterval: DefaultResendInterval, maxResendAttempts: DefaultMaxResendAttempts, syncMessageInterval: DefaultSyncMessageInterval, - bufferSweepInterval: DefaultBufferSweepInterval + bufferSweepInterval: DefaultBufferSweepInterval, ) proc cleanup*(rm: ReliabilityManager) {.raises: [].} = @@ -76,7 +76,9 @@ proc addToHistory*(rm: ReliabilityManager, msgId: MessageID) {.gcsafe, raises: [ if rm.messageHistory.len > rm.config.maxMessageHistory: rm.messageHistory.delete(0) -proc updateLamportTimestamp*(rm: ReliabilityManager, msgTs: int64) {.gcsafe, raises: [].} = +proc updateLamportTimestamp*( + rm: ReliabilityManager, msgTs: int64 +) {.gcsafe, raises: [].} = rm.lamportTimestamp = max(msgTs, rm.lamportTimestamp) + 1 proc getRecentMessageIDs*(rm: ReliabilityManager, n: int): seq[MessageID] =