diff --git a/reliability.nimble b/reliability.nimble deleted file mode 100644 index 8bc19c8..0000000 --- a/reliability.nimble +++ /dev/null @@ -1,16 +0,0 @@ -# Package -version = "0.1.0" -author = "Waku Team" -description = "E2E Reliability Protocol API" -license = "MIT" -srcDir = "src" - -# Dependencies -requires "nim >= 2.0.8" -requires "chronicles" -requires "libp2p" - -# Tasks -task test, "Run the test suite": - exec "nim c -r tests/test_bloom.nim" - exec "nim c -r tests/test_reliability.nim" diff --git a/src/sds.nim b/src/sds.nim new file mode 100644 index 0000000..3a20ce2 --- /dev/null +++ b/src/sds.nim @@ -0,0 +1,3 @@ +import ./sds/[message, protobuf, reliability, reliability_utils] + +export message, protobuf, reliability, reliability_utils diff --git a/src/bloom.nim b/src/sds/bloom.nim similarity index 100% rename from src/bloom.nim rename to src/sds/bloom.nim diff --git a/src/message.nim b/src/sds/message.nim similarity index 100% rename from src/message.nim rename to src/sds/message.nim diff --git a/src/private/probabilities.nim b/src/sds/private/probabilities.nim similarity index 100% rename from src/private/probabilities.nim rename to src/sds/private/probabilities.nim diff --git a/src/protobuf.nim b/src/sds/protobuf.nim similarity index 98% rename from src/protobuf.nim rename to src/sds/protobuf.nim index 1f6d600..377142d 100644 --- a/src/protobuf.nim +++ b/src/sds/protobuf.nim @@ -1,7 +1,7 @@ import libp2p/protobuf/minprotobuf import std/options import endians -import ../src/[message, protobufutil, bloom, reliability_utils] +import ./[message, protobufutil, bloom, reliability_utils] proc encode*(msg: SdsMessage): ProtoBuffer = var pb = initProtoBuffer() diff --git a/src/protobufutil.nim b/src/sds/protobufutil.nim similarity index 100% rename from src/protobufutil.nim rename to src/sds/protobufutil.nim diff --git a/src/reliability.nim b/src/sds/reliability.nim similarity index 94% rename from src/reliability.nim rename to src/sds/reliability.nim index a39fac3..199a598 100644 --- a/src/reliability.nim +++ b/src/sds/reliability.nim @@ -2,6 +2,8 @@ import std/[times, locks, tables, sets, options] import chronos, results, chronicles import ./[message, protobuf, reliability_utils, rolling_bloom_filter] +export message, reliability_utils, protobuf + proc newReliabilityManager*( config: ReliabilityConfig = defaultConfig() ): Result[ReliabilityManager, ReliabilityError] = @@ -47,12 +49,12 @@ proc reviewAckStatus(rm: ReliabilityManager, msg: SdsMessage) {.gcsafe.} = capacity: bfResult.get().capacity, minCapacity: ( bfResult.get().capacity.float * (100 - CapacityFlexPercent).float / 100.0 - ).int, - maxCapacity: ( - bfResult.get().capacity.float * (100 + CapacityFlexPercent).float / 100.0 - ).int, - messages: @[], - ) + ).int, + maxCapacity: ( + bfResult.get().capacity.float * (100 + CapacityFlexPercent).float / 100.0 + ).int, + messages: @[], + ) ) else: error "Failed to deserialize bloom filter", error = bfResult.error @@ -112,14 +114,16 @@ proc wrapOutgoingMessage*( let msg = SdsMessage( messageId: messageId, lamportTimestamp: channel.lamportTimestamp, - causalHistory: rm.getRecentSdsMessageIDs(rm.config.maxCausalHistory, channelId), + causalHistory: rm.getRecentSdsMessageIDs(rm.config.maxCausalHistory, + channelId), channelId: channelId, content: message, bloomFilter: bfResult.get(), ) channel.outgoingBuffer.add( - UnacknowledgedMessage(message: msg, sendTime: getTime(), resendAttempts: 0) + UnacknowledgedMessage(message: msg, sendTime: getTime(), + resendAttempts: 0) ) # Add to causal history and bloom filter @@ -132,7 +136,8 @@ proc wrapOutgoingMessage*( channelId = channelId, msg = getCurrentExceptionMsg() return err(ReliabilityError.reSerializationError) -proc processIncomingBuffer(rm: ReliabilityManager, channelId: SdsChannelID) {.gcsafe.} = +proc processIncomingBuffer(rm: ReliabilityManager, + channelId: SdsChannelID) {.gcsafe.} = withLock rm.lock: if channelId notin rm.channels: error "Channel does not exist", channelId = channelId @@ -176,7 +181,8 @@ proc processIncomingBuffer(rm: ReliabilityManager, channelId: SdsChannelID) {.gc proc unwrapReceivedMessage*( rm: ReliabilityManager, message: seq[byte] ): Result[ - tuple[message: seq[byte], missingDeps: seq[SdsMessageID], channelId: SdsChannelID], + tuple[message: seq[byte], missingDeps: seq[SdsMessageID], + channelId: SdsChannelID], ReliabilityError, ] = ## Unwraps a received message and processes its reliability metadata. @@ -234,7 +240,8 @@ proc unwrapReceivedMessage*( return err(ReliabilityError.reDeserializationError) proc markDependenciesMet*( - rm: ReliabilityManager, messageIds: seq[SdsMessageID], channelId: SdsChannelID + rm: ReliabilityManager, messageIds: seq[SdsMessageID], + channelId: SdsChannelID ): Result[void, ReliabilityError] = ## Marks the specified message dependencies as met. ## @@ -330,7 +337,8 @@ proc periodicBufferSweep( except Exception: error "Error in periodic buffer sweep", msg = getCurrentExceptionMsg() - await sleepAsync(chronos.milliseconds(rm.config.bufferSweepInterval.inMilliseconds)) + await sleepAsync(chronos.milliseconds( + rm.config.bufferSweepInterval.inMilliseconds)) proc periodicSyncMessage( rm: ReliabilityManager @@ -351,7 +359,8 @@ proc startPeriodicTasks*(rm: ReliabilityManager) = asyncSpawn rm.periodicBufferSweep() asyncSpawn rm.periodicSyncMessage() -proc resetReliabilityManager*(rm: ReliabilityManager): Result[void, ReliabilityError] = +proc resetReliabilityManager*(rm: ReliabilityManager): Result[void, + ReliabilityError] = ## Resets the ReliabilityManager to its initial state. ## ## This procedure clears all buffers and resets the Lamport timestamp. diff --git a/src/reliability_utils.nim b/src/sds/reliability_utils.nim similarity index 100% rename from src/reliability_utils.nim rename to src/sds/reliability_utils.nim diff --git a/src/rolling_bloom_filter.nim b/src/sds/rolling_bloom_filter.nim similarity index 100% rename from src/rolling_bloom_filter.nim rename to src/sds/rolling_bloom_filter.nim diff --git a/tests/test_bloom.nim b/tests/test_bloom.nim index ad88bba..5a934ef 100644 --- a/tests/test_bloom.nim +++ b/tests/test_bloom.nim @@ -1,5 +1,5 @@ import unittest, results, strutils -import ../src/bloom +import ../src/sds/bloom from random import rand, randomize suite "bloom filter": diff --git a/tests/test_reliability.nim b/tests/test_reliability.nim index 7b68a86..257be10 100644 --- a/tests/test_reliability.nim +++ b/tests/test_reliability.nim @@ -1,5 +1,5 @@ import unittest, results, chronos, std/[times, options, tables] -import ../src/[reliability, message, protobuf, reliability_utils, rolling_bloom_filter] +import ../src/sds/[reliability, message, protobuf, reliability_utils, rolling_bloom_filter] const testChannel = "testChannel"