Toolbox snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
Signal.hpp
Go to the documentation of this file.
1// The Reactive C++ Toolbox.
2// Copyright (C) 2013-2019 Swirly Cloud Limited
3// Copyright (C) 2021 Reactive Markets Limited
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17#ifndef TOOLBOX_SYS_SIGNAL_HPP
18#define TOOLBOX_SYS_SIGNAL_HPP
19
20#include <toolbox/sys/Time.hpp>
21
22#include <csignal>
23
24namespace toolbox {
25inline namespace sys {
26
28 public:
29 SigWait(std::initializer_list<int> mask = {SIGHUP, SIGINT, SIGUSR1, SIGUSR2, SIGTERM});
30 ~SigWait();
31
32 // Copy.
33 SigWait(const SigWait&) = delete;
34 SigWait& operator=(const SigWait&) = delete;
35
36 // Move.
37 SigWait(SigWait&&) = delete;
39
40 int operator()() const;
42 int operator()(Duration timeout) const;
43
44 template <typename RepT, typename PeriodT>
45 int operator()(std::chrono::duration<RepT, PeriodT> timeout) const
46 {
47 return this->operator()(std::chrono::duration_cast<Duration>(timeout));
48 }
49
50 private:
51 sigset_t new_mask_, old_mask_;
52};
53
56
57} // namespace sys
58} // namespace toolbox
59
60#endif // TOOLBOX_SYS_SIGNAL_HPP
#define TOOLBOX_API
Definition Config.h:39
SigWait & operator=(const SigWait &)=delete
SigWait & operator=(SigWait &&)=delete
int operator()(std::chrono::duration< RepT, PeriodT > timeout) const
Definition Signal.hpp:45
SigWait(const SigWait &)=delete
SigWait(SigWait &&)=delete
void sig_block_all()
Block all signals.
Definition Signal.cpp:82
Nanos Duration
Definition Time.hpp:40