Conscience Core
AsioContext.h
Go to the documentation of this file.
1 //
2 // Created by Louis Grignon on 27/08/2025.
3 //
4 
5 #ifndef ASIOCONTEXT_H
6 #define ASIOCONTEXT_H
7 
8 #include <CscCommon.h>
9 #include <thread>
10 
11 namespace boost::asio {
12 class io_context;
13 }
14 
20 class AsioContext {
21 public:
25  AsioContext(size_t nbThreads = 1);
26 
31  virtual ~AsioContext();
32  boost::asio::io_context *const context;
33 
37  void stopActivity();
38 
39 private:
40  size_t nbThreads;
41  std::vector<std::thread> workers;
42  std::atomic_bool stopping = false;
43  void ioRunLoop(size_t workerId) const;
44 };
45 
47 
48 }
49 #endif //ASIOCONTEXT_H
conscience_core::communication::AsioContext
Definition: AsioContext.h:20
conscience_core::communication::AsioContext::~AsioContext
virtual ~AsioContext()
Definition: AsioContext.cpp:24
conscience_core::communication::AsioContext::context
boost::asio::io_context *const context
Definition: AsioContext.h:32
conscience_core::communication::AsioContext::stopActivity
void stopActivity()
Definition: AsioContext.cpp:30
conscience_core::communication::AsioContext::AsioContext
AsioContext(size_t nbThreads=1)
Definition: AsioContext.cpp:17
boost::asio
Definition: AsioContext.h:11
CscCommon.h
conscience_core::communication
Definition: CscEntityClient.h:6
conscience_core::communication::getSharedAsioContext
AsioContext * getSharedAsioContext()
Definition: AsioContext.cpp:84