Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
signal_worker.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <atomic>
4#include <functional>
5#include <vector>
6
7#include "native.h"
8#include <asio.hpp>
9
10namespace dcn::async
11{
13 {
14 public:
16 asio::io_context & io_context,
17 std::vector<int> signal_ids,
18 std::function<asio::awaitable<void>()> graceful_close_handler,
19 std::function<void()> close_handler);
20
21 ~SignalWorker() = default;
22
23 SignalWorker(const SignalWorker &) = delete;
24 SignalWorker & operator=(const SignalWorker &) = delete;
27
28 void start();
29
30 private:
31 void armSignalWait();
32
33 asio::io_context & _io_context;
34 asio::signal_set _signal_set;
35
36 std::function<asio::awaitable<void>()> _graceful_close_handler;
37 std::function<void()> _close_handler;
38
39 std::atomic<bool> _shutdown_started = false;
40 std::size_t _registered_signal_count = 0;
41 bool _started = false;
42 };
43}
Definition signal_worker.hpp:13
void start()
Definition signal_worker.cpp:45
SignalWorker(const SignalWorker &)=delete
SignalWorker(SignalWorker &&)=delete
SignalWorker & operator=(SignalWorker &&)=delete
SignalWorker & operator=(const SignalWorker &)=delete
Definition async.hpp:11