How ray-27/alta-bus works
alta_bus is a low-latency TCP market-data message bus. Publishers encode and send binary frames; the bus classifies each connection, publishes data to a shared ring, then dispatches matching frames to subscribers. Subscribers choose all channels or a channel filter and read forwarded frames for application-side decoding. The protocol defines the fixed wire header, message types, and implemented payload formats. The bus implementation excerpt is partial, so the graph omits uncertain internal wiring; documented capabilities are included where their source paths are supported.
Main entry points: src/lib.rs Subscriber SDK · main.rs Connection Handler · header.rs Frame Header · src/lib.rs Publisher SDK
Components 18
Client SDKs
- Publisher SDK
publisher-client/src/lib.rs - Subscriber SDK
subscriber-client/src/lib.rs
Bus Runtime
- TCP Listener
bus/src/main.rs - Connection Handler
bus/src/main.rs - Publisher Loop
bus/src/main.rs - Ring Publisher
bus/src/main.rs - Frame Dispatcher
bus/src/main.rs - Subscription Registry
bus/src/main.rs - Subscriber I/O
bus/src/main.rs
Wire Protocol
- Frame Header
protocol/src/header.rs - Message Types
protocol/src/types.rs - Encode Decode
protocol/src/codec.rs - Price Tick
protocol/src/messages/price_tick.rs - Heartbeat
protocol/src/messages/heartbeat.rs - Other Message IDs
protocol/src/types.rs
Message State
- Shared Ring
bus/src/ring.rs
Other components
- Publisher
- Subscriber
Connections 25
- Publisher → Publisher SDK: publishes through
- Publisher SDK → Frame Header: encodes header
- Publisher SDK → Encode Decode: encodes payload
- Publisher SDK → TCP Listener: sends TCP frames
- Subscriber → Subscriber SDK: subscribes through
- Subscriber SDK → Frame Header: encodes control
- Subscriber SDK → TCP Listener: opens TCP
- TCP Listener → Connection Handler: dispatches connection
- Connection Handler → Frame Header: parses header
- Connection Handler → Publisher Loop: starts publisher
- Publisher Loop → Frame Header: parses frames
- Publisher Loop → Ring Publisher: publishes message
- Ring Publisher → Shared Ring: writes message
- Connection Handler → Subscription Registry: registers filter
- Connection Handler → Subscriber I/O: starts subscriber I/O
- Frame Dispatcher → Shared Ring: consumes messages
- Frame Dispatcher → Subscription Registry: reads filters
- Frame Dispatcher → Subscriber I/O: queues matching frames
- Subscriber I/O → Subscriber: writes TCP frames
- Subscriber SDK → Frame Header: decodes header
- Subscriber SDK → Encode Decode: enables decoding
- Encode Decode → Price Tick: encodes and decodes
- Encode Decode → Heartbeat: encodes and decodes
- Subscriber → Message Types: selects payload decoder
- Message Types → Other Message IDs: defines reserved IDs