FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
feed.hpp File Reference

Hot-path connector concepts (6.2). More...

#include "fastmm/core/messages.hpp"
#include "fastmm/venues/event_sink.hpp"
#include "fastmm/venues/order_commands.hpp"
#include <concepts>
#include <cstdint>
#include <span>
#include <string>
#include <string_view>

Go to the source code of this file.

Classes

struct  fastmm::venues::DecodeResult
 

Namespaces

namespace  fastmm
 
namespace  fastmm::venues
 

Concepts

concept  fastmm::venues::MarketDataFeed
 
concept  fastmm::venues::OrderGateway
 

Enumerations

enum class  fastmm::venues::ParseStatus : std::uint8_t {
  fastmm::venues::Ok = 0 , fastmm::venues::Ignored = 1 , fastmm::venues::Malformed = 2 , fastmm::venues::UnknownSymbol = 3 ,
  fastmm::venues::Overflow = 4 , fastmm::venues::Error = 5
}
 
enum class  fastmm::venues::MdKind : std::uint8_t {
  fastmm::venues::None = 0 , fastmm::venues::BookDelta = 1 , fastmm::venues::BookSnapshot = 2 , fastmm::venues::BookTicker = 3 ,
  fastmm::venues::Trade = 4 , fastmm::venues::PerpState = 5
}
 What a decoder produced into the caller's scratch buffer. More...
 
enum class  fastmm::venues::OrderEventKind : std::uint8_t {
  fastmm::venues::None = 0 , fastmm::venues::Ack = 1 , fastmm::venues::Reject = 2 , fastmm::venues::CancelAck = 3 ,
  fastmm::venues::CancelReject = 4 , fastmm::venues::Fill = 5 , fastmm::venues::Expired = 6 , fastmm::venues::Position = 7
}
 

Functions

constexpr std::string_view fastmm::venues::to_string (ParseStatus s) noexcept
 

Variables

constexpr std::uint32_t fastmm::venues::kDecoderScratchBytes = kMaxMsgBytes
 Every decoder needs a scratch area for the largest message it can produce.
 
constexpr std::size_t fastmm::venues::kJsonPadding = 64
 Parsers that hand raw text frames to simdjson need SIMDJSON_PADDING (64) readable bytes after the payload; RecvBuffer::kPadding guarantees it for WebSocket frames and PaddedJson (padded_json.hpp) for fixtures/tests.
 

Detailed Description

Hot-path connector concepts (6.2).

A venue's market-data feed and order gateway are plain classes instantiated inside the venue's connection handlers (static dispatch, everything inlined); the Venue virtual interface (venue.hpp) is control-path only.

MarketDataFeed: on_message(json, rx_ts) -> ParseStatus (writes into its EventSink) on_connected() / on_disconnected() subscription_payloads() -> span<const std::string> OrderGateway: encode(cmd, now_ms, out) -> bool (Out*Msg -> wire bytes) on_message(json, rx_ts) -> ParseStatus (responses -> order events) can_send(now_ns) -> bool