How orangeboychen/mars-rs works
MarsRS is a Rust port of Tencent Mars, exposing asynchronous xlog logging and (in the full port) STN task networking and SDT network diagnosis through Rust and platform bindings. The main user workflow is app initialization, logging records and flushing them to compatible .xlog files; STN submits timed/retried requests over links, while SDT diagnoses network failures. The map includes the documented platform and CLI surfaces. Source excerpts are partial, so internal wiring beyond explicit workflow documentation is intentionally limited.
Main entry points: appender.rs Async appender · net_core.rs Network core · src/lib.rs C ABI · src/lib.rs JNI bridge
Components 23
Xlog logging
- Xlog API
crates/marsrs-xlog/src/lib.rs - Async appender
crates/marsrs-appender/src/appender.rs - Compression
crates/marsrs-buffer/src/compress.rs - Record framing
crates/marsrs-crypt/src/lib.rs - Xlog files
- Xlog decoder
crates/marsrs-xlog/src/decode.rs - Xlog CLI
crates/marsrs-xlog/src/bin/xlog.rs
STN networking
- STN API
crates/marsrs-stn/src/lib.rs - Network core
crates/marsrs-stn/src/net_core.rs - Short-link tasks
crates/marsrs-stn/src/shortlink_task_manager.rs - Long-link tasks
crates/marsrs-stn/src/longlink_task_manager.rs - Short link
crates/marsrs-stn/src/short_link.rs - Long link
crates/marsrs-stn/src/long_link.rs - Zombie tasks
crates/marsrs-stn/src/zombie_task_manager.rs
SDT diagnosis
- SDT API
crates/marsrs-sdt/src/lib.rs - Diagnosis core
crates/marsrs-sdt/src/sdt_core.rs - Connectivity checks
crates/marsrs-sdt/src/checkimpl.rs - Diagnosis reports
crates/marsrs-sdt/src/report.rs
Platform interfaces
- C ABI
crates/marsrs-ffi/src/lib.rs - JNI bridge
crates/marsrs-jni/src/lib.rs
Other components
- Application
- Network services
- Platform apps
Connections 28
- Application → Xlog API: opens and writes
- Xlog API → Async appender: dispatches records
- Async appender → Compression: compresses payload
- Async appender → Record framing: frames and encrypts
- Async appender → Xlog files: writes and flushes
- Xlog CLI → Xlog decoder: decodes files
- Xlog CLI → Xlog files: reads or writes
- Application → STN API: submits tasks
- STN API → Network core: dispatches tasks
- Network core → Short-link tasks: manages short tasks
- Network core → Long-link tasks: manages long tasks
- Short-link tasks → Short link: starts short runs
- Long-link tasks → Long link: sends on channels
- Network core → Zombie tasks: saves displaced tasks
- Short link → Network services: connects
- Long link → Network services: connects
- Application → SDT API: requests diagnosis
- SDT API → Diagnosis core: starts checks
- Diagnosis core → Connectivity checks: runs probes
- Diagnosis core → Diagnosis reports: produces reports
- Platform apps → C ABI: calls C ABI
- Platform apps → JNI bridge: calls JNI
- C ABI → Xlog API: exposes logging
- C ABI → STN API: exposes tasks
- C ABI → SDT API: exposes diagnosis
- JNI bridge → Xlog API: exposes logging
- JNI bridge → STN API: exposes tasks
- JNI bridge → SDT API: exposes diagnosis