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

Protocol codec concepts (plan 7). More...

#include "fastmm/core/messages.hpp"
#include "fastmm/venues/event_sink.hpp"
#include "fastmm/venues/feed.hpp"
#include "fastmm/venues/order_commands.hpp"
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <span>
#include <string_view>
#include <type_traits>

Go to the source code of this file.

Classes

struct  fastmm::codecs::FrameView
 One complete application frame carved out of a byte stream. More...
 

Namespaces

namespace  fastmm
 
namespace  fastmm::codecs
 

Concepts

concept  fastmm::codecs::Framer
 Splits a byte stream into frames without copying. Must be re-entrant on partial input.
 
concept  fastmm::codecs::Decoder
 Turns one frame into zero or more normalised engine events written to the sink.
 
concept  fastmm::codecs::Encoder
 Serialises one outbound command into wire bytes. Returns bytes written; 0 on failure.
 
concept  fastmm::codecs::SessionLayer
 Session-level protocol machinery (FIX Logon/Heartbeat/Resend, SoupBinTCP login, MoldUDP gap requests).
 

Typedefs

using fastmm::codecs::be16_t = detail::EndianField< std::uint16_t, true >
 
using fastmm::codecs::be32_t = detail::EndianField< std::uint32_t, true >
 
using fastmm::codecs::be64_t = detail::EndianField< std::uint64_t, true >
 
using fastmm::codecs::le16_t = detail::EndianField< std::uint16_t, false >
 
using fastmm::codecs::le32_t = detail::EndianField< std::uint32_t, false >
 
using fastmm::codecs::le64_t = detail::EndianField< std::uint64_t, false >
 

Enumerations

enum class  fastmm::codecs::SessionState : std::uint8_t { fastmm::codecs::Down = 0 , fastmm::codecs::LoggingOn = 1 , fastmm::codecs::Up = 2 , fastmm::codecs::Recovering = 3 }
 

Functions

std::string_view fastmm::codecs::library_name () noexcept
 

Detailed Description

Protocol codec concepts (plan 7).

Only the shapes are defined here (M3 fills in FIX / ITCH / OUCH / MDP3 under codecs/<proto>/). A binary-protocol venue plugs into the same net stack as the JSON venues:

Connection<Stream, Pipeline<Framer, SessionLayer, Decoder>>

where WsClient is "just" a Framer whose frames are text, and the venue JSON decoders are Decoders. Nothing in this header allocates or is virtual.