A C++ port of the Julia-based SPIDERS message sender tool, using SBE code generation for wire-format compatibility.
- Fast startup: C++ binary starts instantly vs ~2-5 second Julia JIT overhead
- Lower memory: No Julia runtime required
- Easy integration: Links with other C/C++ systems
- Generated SBE codecs: Message encoding is generated from the same XML schemas used by Julia, ensuring compatibility
sudo dnf install cfitsio cfitsio-develSBE_VERSION=1.33.1
sudo mkdir -p /opt/sbe
sudo curl -L -o /opt/sbe/sbe-all-${SBE_VERSION}.jar \
https://github.com/aeron-io/simple-binary-encoding/releases/download/${SBE_VERSION}/sbe-all-${SBE_VERSION}.jar
# Requires Java 11+ runtime
sudo dnf install java-11-openjdk-headlessThe Aeron media driver must be running. On this system it uses:
- Directory:
/dev/shm/aeron-rtc/
cd /opt/spiders/spidersmsg2
# Generate SBE codecs and build
make
# Or just regenerate SBE code
make generate-sbeThe binary will be created at bin/spidersmsg.
# Simple event
./bin/spidersmsg --stream 301 --event Stop
# Event with numeric value
./bin/spidersmsg --stream 901 --event serialno=27261006
# Event with string value
./bin/spidersmsg --stream 1831 --event Ch6Mode=NORMAL
# Event with FITS file
./bin/spidersmsg --stream 701 --event dark=/path/to/dark.fits
# Multiple events
./bin/spidersmsg --stream 701 --event dark=/path/dark.fits --event Play
# Specify Aeron directory
./bin/spidersmsg --dir /dev/shm/aeron-rtc/ --stream 301 --event Stopcd test
julia create_test_fits.jljulia test/test_receiver.jl 9999./test/compare_implementations.shspidersmsg2/
├── README.md # This file
├── IMPLEMENTATION.md # Detailed implementation documentation
├── Makefile
├── src/
│ ├── main.cpp # Entry point
│ ├── spidersmsg.hpp # Main header
│ ├── message_sender.cpp # Message encoding using generated SBE codecs
│ ├── message_sender.hpp
│ ├── aeron_client.cpp # Aeron communication
│ ├── aeron_client.hpp
│ ├── fits_reader.cpp # FITS file reading
│ ├── fits_reader.hpp
│ └── generated/ # SBE-generated code (do not edit)
│ └── spiders/sbe/ # Generated message codecs
├── test/
│ ├── test_receiver.jl # Julia receiver for testing
│ ├── create_test_fits.jl
│ └── compare_implementations.sh
└── bin/
└── spidersmsg # Compiled binary
IMPLEMENTATION.md- Detailed technical documentation- Original Julia implementation:
/home/spiders/.julia/dev/SpidersMessageEncoding/ - SBE Schemas:
/home/spiders/.julia/dev/SpidersMessageEncoding/sbe-schemas/