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 "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
27 void sendExecutionReport(const ExecutionReport& report);
29 const MarketDataSnapshotFullRefresh& snapshot);
31 const MarketDataIncrementalRefresh& refresh);
32 void sendReject(const Reject& reject);
34
35 [[nodiscard]] uint32_t getSessionID() const;
36
37 private:
38 void doRead();
39 void doWrite(std::shared_ptr<std::string> message);
40 void handleFixMessage(const std::string& fixMessage, char msgType);
41 void handleCancelOrderRequest(const std::string& fixMessage);
42 void handleModifyOrderRequest(const std::string& fixMessage);
43 void handleMarketDataRequest(const std::string& fixMessage);
44
45 static constexpr size_t MaxLength = 8192;
46 asio::ip::tcp::socket mSocket;
47 FixServer& mServer; // Store server reference
49 std::vector<char> mData;
50 std::string mReadBuffer;
51 uint32_t mSessionId;
52 std::unordered_map<common::Symbol, std::string> mMarketDataReqIdMap;
53 };
54
55} // 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:15
Definition FixSession.h:20
void doWrite(std::shared_ptr< std::string > message)
Definition FixSession.cpp:80
std::vector< char > mData
Definition FixSession.h:49
void start()
Definition FixSession.cpp:32
FixServer & mServer
Definition FixSession.h:47
uint32_t mSessionId
Definition FixSession.h:51
void sendMarketDataSnapshotFullRefresh(const MarketDataSnapshotFullRefresh &snapshot)
Definition FixSession.cpp:43
void handleCancelOrderRequest(const std::string &fixMessage)
Definition FixSession.cpp:211
std::unordered_map< common::Symbol, std::string > mMarketDataReqIdMap
Definition FixSession.h:52
void doRead()
Definition FixSession.cpp:95
static constexpr size_t MaxLength
Definition FixSession.h:45
uint32_t getSessionID() const
Definition FixSession.cpp:75
trading_core::TradingCore & mTradingCore
Definition FixSession.h:48
asio::ip::tcp::socket mSocket
Definition FixSession.h:46
std::string mReadBuffer
Definition FixSession.h:50
void sendReject(const Reject &reject)
Definition FixSession.cpp:65
void sendBusinessMessageReject(const BusinessMessageReject &bizReject)
Definition FixSession.cpp:70
void sendMarketDataIncrementalRefresh(const MarketDataIncrementalRefresh &refresh)
Definition FixSession.cpp:54
void handleMarketDataRequest(const std::string &fixMessage)
Definition FixSession.cpp:266
void sendExecutionReport(const ExecutionReport &report)
Definition FixSession.cpp:37
void handleFixMessage(const std::string &fixMessage, char msgType)
Definition FixSession.cpp:136
void handleModifyOrderRequest(const std::string &fixMessage)
Definition FixSession.cpp:236
High-level manager for partitions and command dispatch.
Definition TradingCore.h:27
Definition ExecutionReport.h:6
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