54 const std::string& senderCompId,
55 const std::string& targetCompId,
56 const std::string& seqStoreDir =
"seq_store");
63 void connect(
const std::string& host,
short port);
75 void sendLogon(
int heartbeatInterval = 30,
bool forceReset =
false);
80 void sendLogout(
const std::string& reason =
"");
87 void sendMessage(
const std::string& msgType,
const std::string& bodyStr);
94 void sendNewOrder(
const std::string& symbol,
char side,
double price,
int qty,
char type =
'2',
char tif =
'0');
108 void doWrite(std::shared_ptr<std::string> message);
Declares the FixMessageParser class for parsing incoming FIX messages for the client.
Manages persistence of FIX sequence numbers for the client.
High-performance asynchronous FIX client using ASIO.
Definition FixClientSession.h:35
void handleHeartbeat(const std::string &msgStr)
Definition FixClientSession.cpp:246
void handleSequenceReset(const std::string &msgStr)
Definition FixClientSession.cpp:287
SeqNumStore mSeqStore
Definition FixClientSession.h:136
void doWrite(std::shared_ptr< std::string > message)
Definition FixClientSession.cpp:127
StateChangeCallback mStateChangeCb
Definition FixClientSession.h:145
void changeState(FixClientState newState)
Definition FixClientSession.cpp:297
static constexpr size_t ChunkSize
Definition FixClientSession.h:139
void setStateChangeCallback(StateChangeCallback cb)
Definition FixClientSession.h:100
asio::ip::tcp::resolver mResolver
Definition FixClientSession.h:125
int mHeartbeatInterval
Definition FixClientSession.h:132
asio::io_context & mIoContext
Definition FixClientSession.h:123
asio::ip::tcp::socket mSocket
Definition FixClientSession.h:124
asio::steady_timer mTestReqTimer
Definition FixClientSession.h:127
std::string mSenderCompId
Definition FixClientSession.h:130
void setMessageCallback(MessageCallback cb)
Definition FixClientSession.h:99
void disconnect()
Closes the socket and stops reading.
Definition FixClientSession.cpp:56
void startTestRequestTimer()
Definition FixClientSession.cpp:323
FixClientState getState() const
Definition FixClientSession.h:103
void sendAuthRequest(const std::string &username, const std::string &password)
Helper to send an authenticated UserRequest (35=BE)
void sendLogout(const std::string &reason="")
Sends a Logout (35=5) request.
Definition FixClientSession.cpp:102
void sendLogon(int heartbeatInterval=30, bool forceReset=false)
Sends a Logon (35=A) request. Must be called after connect() is successful.
Definition FixClientSession.cpp:67
void handleLogoutResponse(const std::string &msgStr)
Definition FixClientSession.cpp:241
std::string mTargetCompId
Definition FixClientSession.h:131
friend class FixClientSessionTests
Definition FixClientSession.h:147
void startHeartbeatTimer()
Definition FixClientSession.cpp:304
void doRead()
Definition FixClientSession.cpp:140
void handleTestRequest(const std::string &msgStr)
Definition FixClientSession.cpp:251
std::vector< char > mReadChunk
Definition FixClientSession.h:140
void setHeartbeatInterval(int seconds)
Definition FixClientSession.h:101
void handleLogonResponse(const std::string &msgStr, uint32_t inSeq)
Definition FixClientSession.cpp:235
asio::steady_timer mHeartbeatTimer
Definition FixClientSession.h:126
void sendNewOrder(const std::string &symbol, char side, double price, int qty, char type='2', char tif='0')
Definition FixClientSession.cpp:327
void sendMessage(const std::string &msgType, const std::string &bodyStr)
Queues a raw FIX message body to be properly headed, trailed, sequenced, and sent.
Definition FixClientSession.cpp:114
~FixClientSession()
Definition FixClientSession.cpp:27
void handleResendRequest(const std::string &msgStr)
Definition FixClientSession.cpp:266
std::function< void(FixClientState)> StateChangeCallback
Callback type for state transitions (e.g. Disconnected -> Active).
Definition FixClientSession.h:45
void connect(const std::string &host, short port)
Connects to the remote FIX server asynchronously.
Definition FixClientSession.cpp:31
const std::string & getSenderCompId() const
Definition FixClientSession.h:104
std::string mReadBuffer
Definition FixClientSession.h:141
std::function< void(const ParsedFixMessage &)> MessageCallback
Callback type for when a fully parsed message falls out of the protocol engine.
Definition FixClientSession.h:40
void sendMarketDataRequest(const std::string &symbol, char subscriptionRequestType='1')
Definition FixClientSession.cpp:351
MessageCallback mMessageCb
Definition FixClientSession.h:144
std::atomic< FixClientState > mState
Definition FixClientSession.h:135
void handleProtocolMessage(const std::string &msgStr)
Definition FixClientSession.cpp:172
A thread-safe, file-backed repository for FIX Sequence Numbers.
Definition SeqNumStore.h:21
Definition AuthManager.h:13
FixClientState
Definition FixClientSession.h:22
std::variant< std::monostate, fix::ExecutionReport, fix::MarketDataSnapshotFullRefresh, fix::MarketDataIncrementalRefresh > ParsedFixMessage
A variant representing the possible parsed messages received by the client.
Definition FixMessageParser.h:25