BetaTrader
A HFT Eco-System
Loading...
Searching...
No Matches
DatabaseWorker.h
Go to the documentation of this file.
1
10#pragma once
11#include "rigtorp/SPSCQueue.h"
12#include <SQLiteCpp/SQLiteCpp.h>
13#include <functional>
14#include <string>
15#include <thread>
16
17namespace data {
23 public:
24 explicit DatabaseWorker(std::string dbPath);
25 virtual ~DatabaseWorker();
26
27 virtual void enqueue(std::function<void(SQLite::Database&)> task);
28 size_t getQueueSize() const;
29 void waitUntilIdle();
30 void sync();
31
32 protected:
33 // Protected constructor for mocking
35
36 private:
37 void workerLoop(std::stop_token stopToken);
38
39 std::string mDbPath;
40 std::jthread mWorker;
41 rigtorp::SPSCQueue<std::function<void(SQLite::Database&)>> mTasks;
42 };
43} // namespace data
Executes database tasks asynchronously.
Definition DatabaseWorker.h:22
size_t getQueueSize() const
Definition DatabaseWorker.cpp:31
void sync()
Definition DatabaseWorker.cpp:41
std::jthread mWorker
Definition DatabaseWorker.h:40
DatabaseWorker()
Definition DatabaseWorker.cpp:16
virtual void enqueue(std::function< void(SQLite::Database &)> task)
Definition DatabaseWorker.cpp:26
virtual ~DatabaseWorker()
Definition DatabaseWorker.cpp:18
rigtorp::SPSCQueue< std::function< void(SQLite::Database &)> > mTasks
Definition DatabaseWorker.h:41
void workerLoop(std::stop_token stopToken)
Definition DatabaseWorker.cpp:51
std::string mDbPath
Definition DatabaseWorker.h:39
void waitUntilIdle()
Definition DatabaseWorker.cpp:36
Repository for managing sequence numbers.
Definition Constant.h:13