|
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
|
Record stream: the engine's second outbound queue, next to the journal. More...
#include "fastmm/core/config_macros.hpp"#include "fastmm/core/enums.hpp"#include "fastmm/core/fixed_point.hpp"#include "fastmm/core/messages.hpp"#include "fastmm/core/msg_ring.hpp"#include "fastmm/core/order.hpp"#include "fastmm/core/position.hpp"#include "fastmm/core/strong_id.hpp"#include "fastmm/core/time.hpp"#include <cstddef>#include <cstdint>#include <cstring>#include <string_view>#include <type_traits>Go to the source code of this file.
Classes | |
| struct | fastmm::RecordHeader |
| struct | fastmm::FillRecord |
| One execution. More... | |
| struct | fastmm::OrderRecord |
| The OMS record after a transition. More... | |
| struct | fastmm::PositionRecord |
| One instrument's position and the portfolio totals at the same instant. More... | |
| struct | fastmm::FundingRecord |
A funding payment the engine booked (FundingMsg): amount in the instrument's settlement currency, negative paid. More... | |
| struct | fastmm::KillRecord |
| A kill switch trip. hdr.flags & kVenue marks a per-venue trip (hdr.venue names it). More... | |
| struct | fastmm::ReplayedRecord |
| A venue's execution replay ended complete (a reconciliation began with ReconcileMsg::kExecutionsExact): every execution the venue made before it is in the records before this one. More... | |
| struct | fastmm::ParamRecord |
| A strategy parameter update the engine applied (ParamUpdateMsg): after the header, the message's bytes past its own header, so the fields sit at the same offsets. More... | |
| struct | fastmm::RejectRecord |
| One order refused: by the pre-trade checks (the engine's) or by its venue (an OrderReject), with the account's order budget as the engine saw it then (ctx.order_budget). More... | |
| class | fastmm::RecordWriter |
| Engine-side producer. More... | |
Namespaces | |
| namespace | fastmm |
Enumerations | |
| enum class | fastmm::RecordType : std::uint8_t { fastmm::Fill = 1 , fastmm::Order = 2 , fastmm::Position = 3 , fastmm::Kill = 4 , fastmm::Funding = 5 , fastmm::Replayed = 6 , fastmm::Param = 7 , fastmm::Reject = 8 } |
| Never 0: the ring reserves type 0 for padding. More... | |
| enum class | fastmm::RejectSource : std::uint8_t { fastmm::Risk = 0 , fastmm::RiskBucket = 1 , fastmm::AccountPaused = 2 , fastmm::AccountOrders10s = 3 , fastmm::AccountOrders1m = 4 , fastmm::AccountOrders1d = 5 , fastmm::VenueLocal = 6 , fastmm::Venue = 7 } |
| What refused an order (RejectRecord::source): the limit behind a rate-limit refusal, or the side that refused it otherwise. More... | |
Functions | |
| constexpr std::string_view | fastmm::to_string (RecordType t) noexcept |
| constexpr std::string_view | fastmm::to_string (RejectSource s) noexcept |
Variables | |
| constexpr std::uint8_t | fastmm::kRecordVersion = 1 |
Record stream: the engine's second outbound queue, next to the journal.
engine thread --RecordWriter--> MsgRing --store thread--> a storage backend
The journal is the byte-exact stream a replay consumes; this is the interpreted one, the fills, orders, positions and kill events a store turns into rows. Both are written the same way: the engine copies a trivially copyable record into an SPSC ring and never waits. A full ring drops the record and counts it (EngineStats::records_dropped); nothing in the trading path depends on a record being consumed, so a slow or broken store cannot stall or kill a session. The journal is the authority for anything a drop lost (docs/reference/storage.md).
Records share the MsgRing prefix (4-byte length, 1-byte non-zero type) and are a multiple of 64 bytes, like the event messages, but they carry their own RecordType space and version: the store format is free to change without touching the journal format.