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

Venue registry: [venues. More...

#include "fastmm/config/config.hpp"
#include "fastmm/config/schema.hpp"
#include "fastmm/net/source_address.hpp"
#include "fastmm/venues/venue.hpp"
#include <cstdint>
#include <memory>
#include <span>
#include <string>
#include <string_view>
#include <vector>

Go to the source code of this file.

Classes

struct  fastmm::venues::VenueFactoryOptions
 
struct  fastmm::venues::VenueCapabilities
 What a connector declares about itself before one exists. More...
 
struct  fastmm::venues::VenueKeySpec
 One [venues. More...
 
struct  fastmm::venues::VenueEntry
 
class  fastmm::venues::VenueRegistry
 

Namespaces

namespace  fastmm
 
namespace  fastmm::venues
 

Enumerations

enum class  fastmm::venues::AddResult : std::uint8_t { fastmm::venues::Added , fastmm::venues::AlreadyPresent , fastmm::venues::Conflict , fastmm::venues::Invalid }
 

Functions

net::SourceAddress fastmm::venues::source_address (const VenueSection &s)
 Runtime knobs every connector honours, passed to the factory.
 
constexpr std::string_view fastmm::venues::to_string (AddResult r) noexcept
 
void fastmm::venues::register_builtin_venues (VenueRegistry &r=VenueRegistry::instance())
 Adds the connectors FastMM ships (binance_spot, binance_usdm, bybit, deribit, nasdaq_itch).
 
void fastmm::venues::validate_venues (const Config &cfg, const VenueRegistry &r=VenueRegistry::instance())
 Checks every [venues.
 
std::unique_ptr< Venue > fastmm::venues::make_venue (VenueId id, const VenueSection &section, const VenueFactoryOptions &opts)
 Builds the connector section.kind names.
 
std::unique_ptr< Venue > fastmm::venues::make_venue (VenueId id, const VenueSection &section, const VenueFactoryOptions &opts, const VenueRegistry &r)
 

Detailed Description

Venue registry: [venues.

<name>] kind -> the connector that serves it. An entry carries the venue's capabilities, the [venues.<name>] keys the venue owns and one factory, so nothing about a connector reaches the core: the central schema (include/fastmm/config/schema.hpp) knows only the generic keys, and no if (kind == X) lives outside a venue's own code.

Nothing registers itself, for the same reason the strategy and storage registries do not (a static library's self-registering object is dropped by the linker): fastmm::venues::register_builtin_venues() adds the connectors FastMM ships, and an out-of-tree venue calls add() before the session starts (examples/external-venue).

constexpr VenueKeySpec kEchoKeys[] = { {"greeting", KeyType::String, false, "echo: text the venue sends back (default \\"hi\\")"}, }; VenueRegistry::instance().add({.name = "echo", .summary = "an echo venue", .keys = kEchoKeys, .caps = {.credentials = false}, .make = &make_echo_venue});

docs/how-to/venues/add-a-venue.md walks through it; tools/docs_config_ref.py reads the key tables out of the registration files so a venue's keys land in the configuration reference.