FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
sqlite_store.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include "storage/store.hpp"
9#include <sqlite3.h>
10#include <memory>
11#include <mutex>
12
13namespace fix40 {
14
22class SqliteStore : public IStore {
23public:
28 explicit SqliteStore(const std::string& dbPath);
29
30 ~SqliteStore() override;
31
32 // 禁止拷贝
33 SqliteStore(const SqliteStore&) = delete;
35
39 bool isOpen() const { return db_ != nullptr; }
40
41 // IStore 接口实现
42 bool saveOrder(const Order& order) override;
43 bool saveOrderForAccount(const Order& order, const std::string& accountId) override;
44 bool updateOrder(const Order& order) override;
45 std::optional<Order> loadOrder(const std::string& clOrdID) override;
46 std::vector<Order> loadOrdersBySymbol(const std::string& symbol) override;
47 std::vector<Order> loadOrdersByAccount(const std::string& accountId) override;
48 std::vector<Order> loadActiveOrders() override;
49 std::vector<Order> loadAllOrders() override;
50
51 bool saveTrade(const StoredTrade& trade) override;
52 std::vector<StoredTrade> loadTradesByOrder(const std::string& clOrdID) override;
53 std::vector<StoredTrade> loadTradesBySymbol(const std::string& symbol) override;
54
55 bool saveSessionState(const SessionState& state) override;
56 std::optional<SessionState> loadSessionState(
57 const std::string& senderCompID, const std::string& targetCompID) override;
58
59 bool saveMessage(const StoredMessage& msg) override;
60 std::vector<StoredMessage> loadMessages(
61 const std::string& senderCompID, const std::string& targetCompID,
62 int beginSeqNum, int endSeqNum) override;
64 const std::string& senderCompID, const std::string& targetCompID) override;
65 bool deleteMessagesOlderThan(int64_t timestamp) override;
66
67 // 账户存储
68 bool saveAccount(const Account& account) override;
69 std::optional<Account> loadAccount(const std::string& accountId) override;
70 std::vector<Account> loadAllAccounts() override;
71 bool deleteAccount(const std::string& accountId) override;
72
73 // 持仓存储
74 bool savePosition(const Position& position) override;
75 std::optional<Position> loadPosition(
76 const std::string& accountId, const std::string& instrumentId) override;
77 std::vector<Position> loadPositionsByAccount(const std::string& accountId) override;
78 std::vector<Position> loadAllPositions() override;
79 bool deletePosition(const std::string& accountId, const std::string& instrumentId) override;
80 bool deletePositionsByAccount(const std::string& accountId) override;
81
82private:
86 bool initTables();
87
91 bool execute(const std::string& sql);
92
96 Order extractOrder(sqlite3_stmt* stmt);
97
101 StoredTrade extractTrade(sqlite3_stmt* stmt);
102
106 Account extractAccount(sqlite3_stmt* stmt);
107
111 Position extractPosition(sqlite3_stmt* stmt);
112
113 sqlite3* db_ = nullptr;
114 mutable std::mutex mutex_;
115};
116
117} // namespace fix40
存储接口
Definition store.hpp:61
SQLite 存储实现
Definition sqlite_store.hpp:22
std::vector< StoredTrade > loadTradesByOrder(const std::string &clOrdID) override
Definition sqlite_store.cpp:502
std::optional< Order > loadOrder(const std::string &clOrdID) override
Definition sqlite_store.cpp:337
std::optional< SessionState > loadSessionState(const std::string &senderCompID, const std::string &targetCompID) override
Definition sqlite_store.cpp:585
bool savePosition(const Position &position) override
保存持仓信息
Definition sqlite_store.cpp:891
std::vector< Position > loadAllPositions() override
加载所有持仓
Definition sqlite_store.cpp:989
bool saveOrderForAccount(const Order &order, const std::string &accountId) override
保存订单并记录订单归属账户
Definition sqlite_store.cpp:250
~SqliteStore() override
Definition sqlite_store.cpp:50
bool deleteAccount(const std::string &accountId) override
删除账户
Definition sqlite_store.cpp:868
bool deletePositionsByAccount(const std::string &accountId) override
删除账户的所有持仓
Definition sqlite_store.cpp:1033
bool deletePosition(const std::string &accountId, const std::string &instrumentId) override
删除持仓
Definition sqlite_store.cpp:1013
bool saveTrade(const StoredTrade &trade) override
Definition sqlite_store.cpp:472
SqliteStore(const SqliteStore &)=delete
std::vector< Account > loadAllAccounts() override
加载所有账户
Definition sqlite_store.cpp:844
bool saveAccount(const Account &account) override
保存账户信息
Definition sqlite_store.cpp:777
bool deleteMessagesForSession(const std::string &senderCompID, const std::string &targetCompID) override
删除指定会话方向的所有已持久化消息
Definition sqlite_store.cpp:713
bool saveMessage(const StoredMessage &msg) override
Definition sqlite_store.cpp:624
bool isOpen() const
检查数据库是否已打开
Definition sqlite_store.hpp:39
std::vector< StoredTrade > loadTradesBySymbol(const std::string &symbol) override
Definition sqlite_store.cpp:528
std::vector< Order > loadAllOrders() override
Definition sqlite_store.cpp:444
SqliteStore & operator=(const SqliteStore &)=delete
std::optional< Account > loadAccount(const std::string &accountId) override
加载账户信息
Definition sqlite_store.cpp:817
std::optional< Position > loadPosition(const std::string &accountId, const std::string &instrumentId) override
加载持仓信息
Definition sqlite_store.cpp:934
bool saveSessionState(const SessionState &state) override
Definition sqlite_store.cpp:558
std::vector< Order > loadOrdersByAccount(const std::string &accountId) override
Definition sqlite_store.cpp:391
bool updateOrder(const Order &order) override
Definition sqlite_store.cpp:296
std::vector< Order > loadOrdersBySymbol(const std::string &symbol) override
Definition sqlite_store.cpp:365
std::vector< Order > loadActiveOrders() override
Definition sqlite_store.cpp:417
std::vector< Position > loadPositionsByAccount(const std::string &accountId) override
加载账户的所有持仓
Definition sqlite_store.cpp:963
std::vector< StoredMessage > loadMessages(const std::string &senderCompID, const std::string &targetCompID, int beginSeqNum, int endSeqNum) override
Definition sqlite_store.cpp:651
bool saveOrder(const Order &order) override
保存订单(不包含订单归属信息)
Definition sqlite_store.cpp:246
bool deleteMessagesOlderThan(int64_t timestamp) override
Definition sqlite_store.cpp:694
Definition matching_engine.hpp:23
Order order
Definition simulation_app.cpp:46
持久化存储抽象接口
虚拟交易账户
Definition account.hpp:44
内部订单表示
Definition order.hpp:90
合约持仓
Definition position.hpp:45
会话状态 (用于断线恢复)
Definition store.hpp:37
存储的消息 (用于重传)
Definition store.hpp:48
存储用成交记录
Definition store.hpp:23