# cchrisking/building-low-latency-applications-with-cpp architecture

> Architecture diagram of the GitHub repository cchrisking/building-low-latency-applications-with-cpp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cchrisking/building-low-latency-applications-with-cpp
- Repository: https://github.com/cchrisking/building-low-latency-applications-with-cpp

## Overview

This repository accompanies a book on building low-latency C++ applications; its later chapters assemble a simulated trading ecosystem. Market updates reach a trading engine and its strategies, which manage risk and issue orders through a gateway. The exchange-side server sequences requests for matching, then publishes client responses and market data. The graph uses Chapter12 paths to represent the most developed version in the tree, including the alternative order-book implementation. README capability claims are broad, and source excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`Chapter12/trading/strategy/trade_engine.cpp`](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/trade_engine.cpp) (Trade engine), [`Chapter12/common/lf_queue.h`](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/common/lf_queue.h) (Lock-free queues), [`Chapter12/exchange/matcher/matching_engine.cpp`](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/matching_engine.cpp) (Matching engine), [`Chapter12/exchange/order_server/order_server.cpp`](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/order_server/order_server.cpp) (Order server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_trading["Trading system"]
  node_trading_main["Trading entry<br/>[trading_main.cpp]"]
  node_md_consumer["Market consumer"]
  node_trade_engine["Trade engine<br/>[trade_engine.cpp]"]
  node_local_book["Local book"]
  node_features["Feature engine<br/>[feature_engine.h]"]
  node_position["Position keeper<br/>[position_keeper.h]"]
  node_maker["Market maker<br/>[market_maker.cpp]"]
  node_taker["Liquidity taker"]
  node_order_manager["Order manager<br/>[order_manager.cpp]"]
  node_risk["Risk manager<br/>[risk_manager.cpp]"]
  node_gateway["Order gateway<br/>[order_gateway.cpp]"]
end

subgraph group_exchange["Exchange system"]
  node_exchange_main["Exchange entry<br/>[exchange_main.cpp]"]
  node_order_server["Order server<br/>[order_server.cpp]"]
  node_sequencer["FIFO sequencer<br/>[fifo_sequencer.h]"]
  node_matching["Matching engine"]
  node_order_book["Exchange book<br/>[me_order_book.cpp]"]
  node_alt_book["Map book option"]
  node_publisher["Market publisher"]
  node_snapshot["Snapshot synthesizer"]
end

subgraph group_common["Runtime infrastructure"]
  node_queues["Lock-free queues<br/>[lf_queue.h]"]
  node_sockets["TCP and multicast<br/>[tcp_socket.cpp]"]
end

node_trader(("Trading client"))
node_exchange_network(("Exchange network"))
node_market_feed(("Market-data feed"))

node_trader -->|"starts"| node_trading_main
node_trading_main -->|"starts"| node_trade_engine
node_market_feed -->|"publishes"| node_md_consumer
node_md_consumer -->|"writes updates"| node_queues
node_queues -->|"supplies updates"| node_trade_engine
node_trade_engine -->|"applies updates"| node_local_book
node_trade_engine -->|"updates position"| node_position
node_trade_engine -->|"updates features"| node_features
node_trade_engine -->|"dispatches events"| node_maker
node_trade_engine -->|"dispatches events"| node_taker
node_maker -->|"requests orders"| node_order_manager
node_taker -->|"requests orders"| node_order_manager
node_order_manager -->|"checks orders"| node_risk
node_trade_engine -->|"writes requests"| node_queues
node_queues -->|"supplies requests"| node_gateway
node_gateway -->|"sends orders"| node_sockets
node_sockets -->|"carries requests"| node_order_server
node_exchange_main -->|"starts"| node_order_server
node_order_server -->|"sequences requests"| node_sequencer
node_sequencer -->|"dispatches requests"| node_matching
node_matching -->|"updates book"| node_order_book
node_matching -.->|"uses alternative"| node_alt_book
node_matching -->|"writes responses"| node_queues
node_queues -->|"supplies responses"| node_gateway
node_matching -->|"writes market updates"| node_queues
node_queues -->|"supplies updates"| node_publisher
node_publisher -->|"publishes feed"| node_sockets
node_publisher -->|"synthesizes snapshots"| node_snapshot
node_sockets -->|"delivers feed"| node_market_feed
node_order_server -->|"serves clients"| node_exchange_network

click node_trading_main "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/trading_main.cpp"
click node_md_consumer "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/market_data/market_data_consumer.cpp"
click node_trade_engine "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/trade_engine.cpp"
click node_local_book "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/market_order_book.cpp"
click node_features "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/feature_engine.h"
click node_position "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/position_keeper.h"
click node_maker "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/market_maker.cpp"
click node_taker "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/liquidity_taker.cpp"
click node_order_manager "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/order_manager.cpp"
click node_risk "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/risk_manager.cpp"
click node_gateway "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/order_gw/order_gateway.cpp"
click node_exchange_main "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/exchange_main.cpp"
click node_order_server "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/order_server/order_server.cpp"
click node_sequencer "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/order_server/fifo_sequencer.h"
click node_matching "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/matching_engine.cpp"
click node_order_book "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/me_order_book.cpp"
click node_alt_book "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/unordered_map_me_order_book.cpp"
click node_publisher "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/market_data/market_data_publisher.cpp"
click node_snapshot "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/market_data/snapshot_synthesizer.cpp"
click node_queues "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/common/lf_queue.h"
click node_sockets "https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/common/tcp_socket.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_trading_main,node_md_consumer,node_trade_engine,node_local_book,node_features,node_position,node_maker,node_taker,node_order_manager,node_risk,node_gateway,node_trader toneBlue
class node_exchange_main,node_order_server,node_sequencer,node_matching,node_order_book,node_alt_book,node_publisher,node_snapshot toneAmber
class node_queues,node_sockets toneMint
class node_exchange_network,node_market_feed toneIndigo
```

## Components

### Trading system

- [Trading entry](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/trading_main.cpp): `Chapter12/trading/trading_main.cpp`
- [Market consumer](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/market_data/market_data_consumer.cpp): `Chapter12/trading/market_data/market_data_consumer.cpp`
- [Trade engine](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/trade_engine.cpp): `Chapter12/trading/strategy/trade_engine.cpp`
- [Local book](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/market_order_book.cpp): `Chapter12/trading/strategy/market_order_book.cpp`
- [Feature engine](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/feature_engine.h): `Chapter12/trading/strategy/feature_engine.h`
- [Position keeper](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/position_keeper.h): `Chapter12/trading/strategy/position_keeper.h`
- [Market maker](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/market_maker.cpp): `Chapter12/trading/strategy/market_maker.cpp`
- [Liquidity taker](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/liquidity_taker.cpp): `Chapter12/trading/strategy/liquidity_taker.cpp`
- [Order manager](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/order_manager.cpp): `Chapter12/trading/strategy/order_manager.cpp`
- [Risk manager](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/strategy/risk_manager.cpp): `Chapter12/trading/strategy/risk_manager.cpp`
- [Order gateway](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/trading/order_gw/order_gateway.cpp): `Chapter12/trading/order_gw/order_gateway.cpp`

### Exchange system

- [Exchange entry](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/exchange_main.cpp): `Chapter12/exchange/exchange_main.cpp`
- [Order server](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/order_server/order_server.cpp): `Chapter12/exchange/order_server/order_server.cpp`
- [FIFO sequencer](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/order_server/fifo_sequencer.h): `Chapter12/exchange/order_server/fifo_sequencer.h`
- [Matching engine](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/matching_engine.cpp): `Chapter12/exchange/matcher/matching_engine.cpp`
- [Exchange book](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/me_order_book.cpp): `Chapter12/exchange/matcher/me_order_book.cpp`
- [Map book option](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/matcher/unordered_map_me_order_book.cpp): `Chapter12/exchange/matcher/unordered_map_me_order_book.cpp`
- [Market publisher](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/market_data/market_data_publisher.cpp): `Chapter12/exchange/market_data/market_data_publisher.cpp`
- [Snapshot synthesizer](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/exchange/market_data/snapshot_synthesizer.cpp): `Chapter12/exchange/market_data/snapshot_synthesizer.cpp`

### Runtime infrastructure

- [Lock-free queues](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/common/lf_queue.h): `Chapter12/common/lf_queue.h`
- [TCP and multicast](https://github.com/cchrisking/building-low-latency-applications-with-cpp/blob/main/Chapter12/common/tcp_socket.cpp): `Chapter12/common/tcp_socket.cpp`

### Other components

- **Trading client**
- **Exchange network**
- **Market-data feed**

## Connections

- Trading client → Trading entry: starts
- Trading entry → Trade engine: starts
- Market-data feed → Market consumer: publishes
- Market consumer → Lock-free queues: writes updates
- Lock-free queues → Trade engine: supplies updates
- Trade engine → Local book: applies updates
- Trade engine → Position keeper: updates position
- Trade engine → Feature engine: updates features
- Trade engine → Market maker: dispatches events
- Trade engine → Liquidity taker: dispatches events
- Market maker → Order manager: requests orders
- Liquidity taker → Order manager: requests orders
- Order manager → Risk manager: checks orders
- Trade engine → Lock-free queues: writes requests
- Lock-free queues → Order gateway: supplies requests
- Order gateway → TCP and multicast: sends orders
- TCP and multicast → Order server: carries requests
- Exchange entry → Order server: starts
- Order server → FIFO sequencer: sequences requests
- FIFO sequencer → Matching engine: dispatches requests
- Matching engine → Exchange book: updates book
- Matching engine → Map book option: uses alternative
- Matching engine → Lock-free queues: writes responses
- Lock-free queues → Order gateway: supplies responses
- Matching engine → Lock-free queues: writes market updates
- Lock-free queues → Market publisher: supplies updates
- Market publisher → TCP and multicast: publishes feed
- Market publisher → Snapshot synthesizer: synthesizes snapshots
- TCP and multicast → Market-data feed: delivers feed
- Order server → Exchange network: serves clients
