UniSet  2.6.0
EventLoopServer.h
1 // -------------------------------------------------------------------------
2 #ifndef EventLoopServer_H_
3 #define EventLoopServer_H_
4 // -------------------------------------------------------------------------
5 #include <ev++.h>
6 #include <atomic>
7 #include <thread>
8 // -------------------------------------------------------------------------
9 namespace uniset
10 {
17  {
18  public:
19 
21  virtual ~EventLoopServer();
22 
23  bool evIsActive() const noexcept;
24 
25  protected:
26  // действия при завершении
27  // завершение своих ev::xxx.stop()
28  virtual void evfinish() {}
29 
30  // подготовка перед запуском loop
31  // запусу своих ev::xxx.start()
32  virtual void evprepare() {}
33 
34  // Управление потоком событий
35  void evrun( bool thread = true );
36  void evstop();
37 
38  ev::dynamic_loop loop;
39 
40  private:
41 
42  void onStop() noexcept;
43  void defaultLoop() noexcept;
44 
45  std::atomic_bool cancelled = { false };
46  std::atomic_bool isrunning = { false };
47 
48  ev::async evterm;
49  std::shared_ptr<std::thread> thr;
50  };
51  // -------------------------------------------------------------------------
52 } // end of uniset namespace
53 // -------------------------------------------------------------------------
54 #endif // EventLoopServer_H_
55 // -------------------------------------------------------------------------
Definition: CallbackTimer.h:29
The EventLoopServer class Реализация общей части всех процессов использующих libev. Содержит свой (динамический) eventloop;.
Definition: EventLoopServer.h:16