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
31 protected:
32 // Protected constructor for mocking
34
35 private:
36 void workerLoop(std::stop_token stopToken);
37
38 std::string mDbPath;
39 std::jthread mWorker;
40 rigtorp::SPSCQueue<std::function<void(SQLite::Database&)>> mTasks;
41 };
42} // namespace data
Executes database tasks asynchronously.
Definition DatabaseWorker.h:22
size_t getQueueSize() const
Definition DatabaseWorker.cpp:27
std::jthread mWorker
Definition DatabaseWorker.h:39
DatabaseWorker()
Definition DatabaseWorker.cpp:15
virtual void enqueue(std::function< void(SQLite::Database &)> task)
Definition DatabaseWorker.cpp:22
virtual ~DatabaseWorker()
Definition DatabaseWorker.cpp:17
rigtorp::SPSCQueue< std::function< void(SQLite::Database &)> > mTasks
Definition DatabaseWorker.h:40
void workerLoop(std::stop_token stopToken)
Definition DatabaseWorker.cpp:37
std::string mDbPath
Definition DatabaseWorker.h:38
void waitUntilIdle()
Definition DatabaseWorker.cpp:32
Definition Constant.h:13