|
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
|
Files | |
| backoff.hpp | |
| Exponential backoff with jitter for reconnects: delay_n = cap_n * (1 - jitter) + U(0, cap_n * jitter) where cap_n = min(max_ms, base_ms * 2^n). | |
| connection.hpp | |
| Resilient WebSocket connection: DNS -> TCP -> TLS -> WS upgrade -> auth -> subscribe -> Live, with stale/dead detection, exponential backoff reconnects, and make-before-break rollover ahead of the venue's connection lifetime limit (Binance: 24 h). | |
| crypto.hpp | |
| Cryptographic primitives needed by the venue connectors: HMAC-SHA256 (REST/WS signing), HMAC-SHA384 (Gemini), SHA-1 (WebSocket accept key), SHA-256, base64 and base64url (own implementation), CSPRNG bytes, Ed25519 (Binance session logon / Ed25519 API keys) and ECDSA P-256 (ES256 JWTs of Coinbase CDP keys). | |
| datagram_source.hpp | |
| Datagram receive interface for multicast market data (ADR-0015, section 1). | |
| dpdk_datagram_source.hpp | |
| DPDK datagram source (rx_backend = "dpdk"): one ethdev port, one RX and one TX queue polled from the venue's network thread. | |
| http_client.hpp | |
| Keep-alive HTTP/1.1 client over any ByteStream: one request in flight per connection plus a small FIFO, response bodies framed by Content-Length / chunked / connection-close, and a per-request reactor timer. | |
| kernel_datagram_source.hpp | |
kernel DatagramSource (ADR-0015, section 2): one UDP socket per subscription, bound to the group and port, SO_REUSEADDR, IP_MULTICAST_ALL off, joined any-source or source-specific (a unicast "group" is a local address: bound, not joined); recvmmsg in fixed batches; SO_TIMESTAMPING for kernel and NIC receive times. | |
| reactor.hpp | |
| Single-threaded event loop with a timer min-heap and a thread-safe mailbox (post/wake via eventfd), over one of two backends chosen at construction: | |
| udp_socket.hpp | |
| Non-blocking IPv4 UDP socket with RAII fd ownership: multicast membership, batch receive (recvmmsg) and send (sendmmsg), SO_TIMESTAMPING and busy-poll options. | |
| url.hpp | |
| Minimal URL parsing / query building for venue endpoints. | |
| ws_client.hpp | |
| RFC 6455 WebSocket client over any ByteStream, driven by a Reactor. | |
| xdp_datagram_source.hpp | |
| AF_XDP datagram source (ADR-0015, section 3): one XDP socket per (interface, RX queue), each with its own UMEM, fill and RX rings (the completion ring exists because bind requires it). | |