udx-native-nodejs-mobile
v1.5.1-4
Published
udx is reliable, multiplex, and congestion controlled streams over udp
Readme
libudx
udx is reliable, multiplex, and congestion controlled streams over udp.
It's written in C99 and depends on libuv.
It is pre-alpha wip (there be dragons), but at a stage where it's safe for developers to poke at.
The main purpose is to be a building block for P2P networking. It therefore doesn't come with any handshaking protocol, encryption, and things like that - just reliable, fast, streams.
API
TODO
Node.js bindings
npm install udx-nativeBuilding
Two build setups are available: A GYP build and a CMake build.
GYP
The GYP build is used for building a dynamic library for use in Node.js.
node-gyp configure
node-gyp buildThe above commands are run as part of npm install.
CMake
The CMake build is used for building static and dynamic libraries for use outside of Node.js.
cmake -S . -B build
cmake --build buildDebugging
When debugging native code, make sure to configure a debug build:
# GYP
node-gyp configure --debug
# CMake
cmake -S . -B build -D CMAKE_BUILD_TYPE=DebugMemory errors
To diagnose and debug memory errors, such as leaks and use-after-free, the collection of sanitizers provided by LLVM are recommended. The sanitizers can be enabled by passing additional CFLAGS and/or LDFLAGS to the CMake or GYP build:
# GYP
CFLAGS=<...> LDFLAGS=<...> node-gyp build
# CMake
CFLAGS=<...> LDFLAGS=<...> cmake -S . -B buildTo read more about the various sanitizers and how to use them, see:
- https://clang.llvm.org/docs/AddressSanitizer.html
- https://clang.llvm.org/docs/MemorySanitizer.html
- https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
- https://clang.llvm.org/docs/LeakSanitizer.html
:warning: LeakSanitizer is still experimental and currently requires a newer version of LLVM on macOS. If using Homebrew,
brew install llvmandCC=/usr/local/opt/llvm/bin/clangshould be sufficient.
LICENSE
MIT
