My Project
 
Loading...
Searching...
No Matches
Algo.hh
Go to the documentation of this file.
1#pragma once
2
3// C++ Includes
4#include <memory>
5#include <queue>
6#include <atomic>
7#include <thread>
8#include <future>
9
10
11// FastInAHurry includes
12#include "Publisher.hh"
14#include "utils/ThreadPool.hh"
15
16
17class Algo {
18public:
19 Algo();
20
21 void initialize();
22 void generate_orders();
23 void process();
24 void send(trading::Order&);
25 bool initialized();
26 void stop();
27private:
28 std::queue<trading::Order> _orders;
29 std::atomic<bool> _initialized{false};
30 std::atomic<bool> _running{false};
31 std::shared_ptr<Publisher> _pub;
32
35
36 std::mutex _send_mutex;
37 std::jthread _reader_thread;
38 std::vector<std::jthread> _worker_threads;
39 std::vector<std::future<bool>> _futures;
40};
void stop()
Definition Algo.cc:23
std::atomic< bool > _running
Definition Algo.hh:30
std::mutex _send_mutex
Definition Algo.hh:36
std::vector< std::future< bool > > _futures
Definition Algo.hh:39
std::atomic< bool > _initialized
Definition Algo.hh:29
bool initialized()
Definition Algo.cc:43
std::jthread _reader_thread
Definition Algo.hh:37
std::queue< trading::Order > _orders
Definition Algo.hh:28
void process()
Definition Algo.cc:47
Algo()
Definition Algo.cc:11
void generate_orders()
Definition Algo.cc:39
utils::ThreadSafeQueue< trading::Order > _order_queue
Definition Algo.hh:33
void send(trading::Order &)
Definition Algo.cc:106
std::vector< std::jthread > _worker_threads
Definition Algo.hh:38
void initialize()
Definition Algo.cc:15
utils::ThreadPool _thread_pool
Definition Algo.hh:34
std::shared_ptr< Publisher > _pub
Definition Algo.hh:31
Definition ThreadPool.hh:12
Definition ThreadSafeQueue.hh:11