Ivan Folgueira Bande c82dad828a
protobuf.nim enhancement to avoid crash due to bad handled Result object
This aims to avoid the error that appeared in status-go's
test-functional:

ERROR    root:statusgo_container.py:146 Container health check failed:
Container is not running. Status: exited. Logs (last 10 lines):
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-chronos/chronos/internal/asyncfutures.nim(624)
pollFor
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-chronos/chronos/internal/asyncengine.nim(150)
poll
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/library/sds_thread/sds_thread.nim(45)
runSds
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-chronos/chronos/internal/asyncmacro.nim(71)
process
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/library/sds_thread/inter_thread_communication/requests/sds_message_request.nim(65)
process
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/src/reliability.nim(190)
unwrapReceivedMessage
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/src/protobuf.nim(55)
extractChannelId
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-results/results.nim(445)
value
/go/src/github.com/status-im/status-go/vendor/github.com/waku-org/sds-go-bindings/third_party/nim-sds/vendor/nim-results/results.nim(433)
raiseResultDefect
Error: unhandled exception: Trying to access value with err Result:
BadWireType [ResultDefect]
2025-10-31 19:54:27 +01:00
2025-09-11 14:30:08 +02:00

nim-e2e-reliability

Nim implementation of the e2e reliability protocol

Building

Nix

nix build --print-out-paths '.?submodules=1#libsds'
nix build --print-out-paths '.?submodules=1#libsds-android-arm64'

Windows, Linux or MacOS

make libsds

Android

Download the latest Android NDK. For example, on Ubuntu with Intel:

cd ~
wget https://dl.google.com/android/repository/android-ndk-r27c-linux.zip
unzip android-ndk-r27c-linux.zip

Then, add the following to your ~/.bashrc file:

export ANDROID_NDK_HOME=$HOME/android-ndk-r27c
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH

Then, use one of the following commands, according to the current architecture:

Architecture command
arm64 make libsds-android ARCH=arm64
amd64 make libsds-android ARCH=amd64
x86 make libsds-android ARCH=x86

At the end of the process, the library will be created in build/libsds.so

Description
Nim implementation of the e2e reliability protocol
Readme
Languages
Nim 85.1%
Nix 6%
Makefile 5.3%
Shell 2.1%
C 1.5%