FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
fix40::SqliteStore Class Reference

SQLite 存储实现 More...

#include <sqlite_store.hpp>

Inheritance diagram for fix40::SqliteStore:
Inheritance graph
Collaboration diagram for fix40::SqliteStore:
Collaboration graph

Public Member Functions

 SqliteStore (const std::string &dbPath)
 构造函数
 
 ~SqliteStore () override
 
 SqliteStore (const SqliteStore &)=delete
 
SqliteStoreoperator= (const SqliteStore &)=delete
 
bool isOpen () const
 检查数据库是否已打开
 
bool saveOrder (const Order &order) override
 保存订单(不包含订单归属信息)
 
bool saveOrderForAccount (const Order &order, const std::string &accountId) override
 保存订单并记录订单归属账户
 
bool updateOrder (const Order &order) override
 
std::optional< OrderloadOrder (const std::string &clOrdID) override
 
std::vector< OrderloadOrdersBySymbol (const std::string &symbol) override
 
std::vector< OrderloadOrdersByAccount (const std::string &accountId) override
 
std::vector< OrderloadActiveOrders () override
 
std::vector< OrderloadAllOrders () override
 
bool saveTrade (const StoredTrade &trade) override
 
std::vector< StoredTradeloadTradesByOrder (const std::string &clOrdID) override
 
std::vector< StoredTradeloadTradesBySymbol (const std::string &symbol) override
 
bool saveSessionState (const SessionState &state) override
 
std::optional< SessionStateloadSessionState (const std::string &senderCompID, const std::string &targetCompID) override
 
bool saveMessage (const StoredMessage &msg) override
 
std::vector< StoredMessageloadMessages (const std::string &senderCompID, const std::string &targetCompID, int beginSeqNum, int endSeqNum) override
 
bool deleteMessagesForSession (const std::string &senderCompID, const std::string &targetCompID) override
 删除指定会话方向的所有已持久化消息
 
bool deleteMessagesOlderThan (int64_t timestamp) override
 
bool saveAccount (const Account &account) override
 保存账户信息
 
std::optional< AccountloadAccount (const std::string &accountId) override
 加载账户信息
 
std::vector< AccountloadAllAccounts () override
 加载所有账户
 
bool deleteAccount (const std::string &accountId) override
 删除账户
 
bool savePosition (const Position &position) override
 保存持仓信息
 
std::optional< PositionloadPosition (const std::string &accountId, const std::string &instrumentId) override
 加载持仓信息
 
std::vector< PositionloadPositionsByAccount (const std::string &accountId) override
 加载账户的所有持仓
 
std::vector< PositionloadAllPositions () override
 加载所有持仓
 
bool deletePosition (const std::string &accountId, const std::string &instrumentId) override
 删除持仓
 
bool deletePositionsByAccount (const std::string &accountId) override
 删除账户的所有持仓
 
- Public Member Functions inherited from fix40::IStore
virtual ~IStore ()=default
 

Detailed Description

SQLite 存储实现

线程安全的 SQLite 存储实现。 支持内存数据库 (":memory:") 用于测试。

Constructor & Destructor Documentation

◆ SqliteStore() [1/2]

fix40::SqliteStore::SqliteStore ( const std::string &  dbPath)
explicit

构造函数

Parameters
dbPath数据库文件路径,":memory:" 表示内存数据库

◆ ~SqliteStore()

fix40::SqliteStore::~SqliteStore ( )
override

◆ SqliteStore() [2/2]

fix40::SqliteStore::SqliteStore ( const SqliteStore )
delete

Member Function Documentation

◆ deleteAccount()

bool fix40::SqliteStore::deleteAccount ( const std::string &  accountId)
overridevirtual

删除账户

从数据库删除指定账户。

Parameters
accountId账户ID
Returns
删除成功返回 true,失败返回 false
Warning
删除账户不会自动删除关联的持仓数据,需要单独处理

Implements fix40::IStore.

◆ deleteMessagesForSession()

bool fix40::SqliteStore::deleteMessagesForSession ( const std::string &  senderCompID,
const std::string &  targetCompID 
)
overridevirtual

删除指定会话方向的所有已持久化消息

典型用途:处理 Logon 的 ResetSeqNumFlag(141)=Y 时,清理旧会话的消息记录, 避免序列号重置后出现同一 seq_num 的重复历史消息干扰重传。

Parameters
senderCompID发送方 CompID
targetCompID接收方 CompID
Returns
删除成功返回 true,失败返回 false

Implements fix40::IStore.

◆ deleteMessagesOlderThan()

bool fix40::SqliteStore::deleteMessagesOlderThan ( int64_t  timestamp)
overridevirtual

Implements fix40::IStore.

◆ deletePosition()

bool fix40::SqliteStore::deletePosition ( const std::string &  accountId,
const std::string &  instrumentId 
)
overridevirtual

删除持仓

从数据库删除指定持仓。

Parameters
accountId账户ID
instrumentId合约代码
Returns
删除成功返回 true,失败返回 false

Implements fix40::IStore.

◆ deletePositionsByAccount()

bool fix40::SqliteStore::deletePositionsByAccount ( const std::string &  accountId)
overridevirtual

删除账户的所有持仓

从数据库删除指定账户的所有持仓。

Parameters
accountId账户ID
Returns
删除成功返回 true,失败返回 false

Implements fix40::IStore.

◆ isOpen()

bool fix40::SqliteStore::isOpen ( ) const
inline

检查数据库是否已打开

◆ loadAccount()

std::optional< Account > fix40::SqliteStore::loadAccount ( const std::string &  accountId)
overridevirtual

加载账户信息

从数据库加载指定账户的状态。

Parameters
accountId账户ID
Returns
如果账户存在返回 Account 对象,否则返回 std::nullopt

Implements fix40::IStore.

◆ loadActiveOrders()

std::vector< Order > fix40::SqliteStore::loadActiveOrders ( )
overridevirtual

Implements fix40::IStore.

◆ loadAllAccounts()

std::vector< Account > fix40::SqliteStore::loadAllAccounts ( )
overridevirtual

加载所有账户

从数据库加载所有账户信息。

Returns
账户列表

Implements fix40::IStore.

◆ loadAllOrders()

std::vector< Order > fix40::SqliteStore::loadAllOrders ( )
overridevirtual

Implements fix40::IStore.

◆ loadAllPositions()

std::vector< Position > fix40::SqliteStore::loadAllPositions ( )
overridevirtual

加载所有持仓

从数据库加载所有持仓信息。

Returns
持仓列表

Implements fix40::IStore.

◆ loadMessages()

std::vector< StoredMessage > fix40::SqliteStore::loadMessages ( const std::string &  senderCompID,
const std::string &  targetCompID,
int  beginSeqNum,
int  endSeqNum 
)
overridevirtual

Implements fix40::IStore.

◆ loadOrder()

std::optional< Order > fix40::SqliteStore::loadOrder ( const std::string &  clOrdID)
overridevirtual

Implements fix40::IStore.

◆ loadOrdersByAccount()

std::vector< Order > fix40::SqliteStore::loadOrdersByAccount ( const std::string &  accountId)
overridevirtual

Implements fix40::IStore.

◆ loadOrdersBySymbol()

std::vector< Order > fix40::SqliteStore::loadOrdersBySymbol ( const std::string &  symbol)
overridevirtual

Implements fix40::IStore.

◆ loadPosition()

std::optional< Position > fix40::SqliteStore::loadPosition ( const std::string &  accountId,
const std::string &  instrumentId 
)
overridevirtual

加载持仓信息

从数据库加载指定账户在指定合约上的持仓。

Parameters
accountId账户ID
instrumentId合约代码
Returns
如果持仓存在返回 Position 对象,否则返回 std::nullopt

Implements fix40::IStore.

◆ loadPositionsByAccount()

std::vector< Position > fix40::SqliteStore::loadPositionsByAccount ( const std::string &  accountId)
overridevirtual

加载账户的所有持仓

从数据库加载指定账户的所有持仓信息。

Parameters
accountId账户ID
Returns
持仓列表

Implements fix40::IStore.

◆ loadSessionState()

std::optional< SessionState > fix40::SqliteStore::loadSessionState ( const std::string &  senderCompID,
const std::string &  targetCompID 
)
overridevirtual

Implements fix40::IStore.

◆ loadTradesByOrder()

std::vector< StoredTrade > fix40::SqliteStore::loadTradesByOrder ( const std::string &  clOrdID)
overridevirtual

Implements fix40::IStore.

◆ loadTradesBySymbol()

std::vector< StoredTrade > fix40::SqliteStore::loadTradesBySymbol ( const std::string &  symbol)
overridevirtual

Implements fix40::IStore.

◆ operator=()

SqliteStore & fix40::SqliteStore::operator= ( const SqliteStore )
delete

◆ saveAccount()

bool fix40::SqliteStore::saveAccount ( const Account account)
overridevirtual

保存账户信息

将账户状态持久化到数据库。如果账户已存在则更新,否则插入新记录。

Parameters
account要保存的账户对象
Returns
保存成功返回 true,失败返回 false
Note
此方法使用 INSERT OR REPLACE 语义,确保幂等性

Implements fix40::IStore.

◆ saveMessage()

bool fix40::SqliteStore::saveMessage ( const StoredMessage msg)
overridevirtual

Implements fix40::IStore.

◆ saveOrder()

bool fix40::SqliteStore::saveOrder ( const Order order)
overridevirtual

保存订单(不包含订单归属信息)

该接口兼容旧代码路径与测试;在需要按用户隔离查询订单历史的场景, 应优先使用 saveOrderForAccount() 写入 accountId 并使用 loadOrdersByAccount() 查询。

Implements fix40::IStore.

Here is the call graph for this function:

◆ saveOrderForAccount()

bool fix40::SqliteStore::saveOrderForAccount ( const Order order,
const std::string &  accountId 
)
overridevirtual

保存订单并记录订单归属账户

Parameters
order订单对象
accountId订单所属账户(由服务端基于 Session 身份绑定得出,不应由客户端消息提供)
Returns
保存成功返回 true,失败返回 false

Implements fix40::IStore.

Here is the caller graph for this function:

◆ savePosition()

bool fix40::SqliteStore::savePosition ( const Position position)
overridevirtual

保存持仓信息

将持仓状态持久化到数据库。如果持仓已存在则更新,否则插入新记录。

Parameters
position要保存的持仓对象
Returns
保存成功返回 true,失败返回 false
Note
此方法使用 INSERT OR REPLACE 语义,确保幂等性

Implements fix40::IStore.

◆ saveSessionState()

bool fix40::SqliteStore::saveSessionState ( const SessionState state)
overridevirtual

Implements fix40::IStore.

◆ saveTrade()

bool fix40::SqliteStore::saveTrade ( const StoredTrade trade)
overridevirtual

Implements fix40::IStore.

◆ updateOrder()

bool fix40::SqliteStore::updateOrder ( const Order order)
overridevirtual

Implements fix40::IStore.


The documentation for this class was generated from the following files: