BetaTrader
A HFT Eco-System
Loading...
Searching...
No Matches
FixSession.h
Go to the documentation of this file.
1#pragma once
2
3#include "common/Instrument.h"
8#include "common_fix/Reject.h"
10#include <asio.hpp>
11#include <cstdint>
12#include <deque>
13#include <memory>
14#include <string>
15#include <unordered_map>
16
17namespace fix {
18 class FixServer; // Forward declaration
19
20 class FixSession : public std::enable_shared_from_this<FixSession> {
21 public:
22 FixSession(asio::ip::tcp::socket socket, FixServer& server, // Add server reference
23 trading_core::TradingCore& tradingCore, uint32_t sessionId);
24
25 void start();
26 void stop();
27
28 void sendExecutionReport(const ExecutionReport& report);
30 const MarketDataSnapshotFullRefresh& snapshot);
32 const MarketDataIncrementalRefresh& refresh);
33 void sendReject(const Reject& reject);
35
36 [[nodiscard]] uint32_t getSessionID() const;
37
38 private:
39 void doRead();
40 void doWrite(std::shared_ptr<std::string> message);
41 void handleFixMessage(const std::string& fixMessage, char msgType);
42 void handleCancelOrderRequest(const std::string& fixMessage);
43 void handleModifyOrderRequest(const std::string& fixMessage);
44 void handleMarketDataRequest(const std::string& fixMessage);
45
46 static constexpr size_t MaxLength = 8192;
47 asio::ip::tcp::socket mSocket;
48 FixServer& mServer; // Store server reference
50 std::vector<char> mData;
51 std::string mReadBuffer;
52 uint32_t mSessionId;
53 std::unordered_map<common::Symbol, std::string> mMarketDataReqIdMap;
54 };
55
56} // namespace fix
Defines the structure for a FIX Business Message Reject message.
Defines the structure for a FIX Session-Level Reject message.
Top-level entry point for the trading core service.
Represents a FIX Execution Report (35=8) message.
Definition ExecutionReport.h:14
Definition FixServer.h:17
Definition FixSession.h:20
void doWrite(std::shared_ptr< std::string > message)
Definition FixSession.cpp:106
std::vector< char > mData
Definition FixSession.h:50
void start()
Definition FixSession.cpp:33
void stop()
Definition FixSession.cpp:38
FixServer & mServer
Definition FixSession.h:48
uint32_t mSessionId
Definition FixSession.h:52
void sendMarketDataSnapshotFullRefresh(const MarketDataSnapshotFullRefresh &snapshot)
Definition FixSession.cpp:54
void handleCancelOrderRequest(const std::string &fixMessage)
Definition FixSession.cpp:381
std::unordered_map< common::Symbol, std::string > mMarketDataReqIdMap
Definition FixSession.h:53
void doRead()
Definition FixSession.cpp:125
static constexpr size_t MaxLength
Definition FixSession.h:46
uint32_t getSessionID() const
Definition FixSession.cpp:101
trading_core::TradingCore & mTradingCore
Definition FixSession.h:49
asio::ip::tcp::socket mSocket
Definition FixSession.h:47
std::string mReadBuffer
Definition FixSession.h:51
void sendReject(const Reject &reject)
Definition FixSession.cpp:86
void sendBusinessMessageReject(const BusinessMessageReject &bizReject)
Definition FixSession.cpp:93
void sendMarketDataIncrementalRefresh(const MarketDataIncrementalRefresh &refresh)
Definition FixSession.cpp:70
void handleMarketDataRequest(const std::string &fixMessage)
Definition FixSession.cpp:450
void sendExecutionReport(const ExecutionReport &report)
Definition FixSession.cpp:46
void handleFixMessage(const std::string &fixMessage, char msgType)
Definition FixSession.cpp:181
void handleModifyOrderRequest(const std::string &fixMessage)
Definition FixSession.cpp:413
High-level manager for partitions and command dispatch.
Definition TradingCore.h:30
Definition BusinessMessageReject.h:12
Represents the data required to build a FIX Business Message Reject (35=j) message.
Definition BusinessMessageReject.h:21
Definition MarketDataIncrementalRefresh.h:22
Definition MarketDataSnapshotFullRefresh.h:21
Represents the data required to build a FIX Session-Level Reject (35=3) message.
Definition Reject.h:20