Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
sys
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
24
namespace
toolbox
{
25
inline
namespace
sys {
26
27
class
TOOLBOX_API
SigWait
{
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
;
38
SigWait
&
operator=
(
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
55
TOOLBOX_API
void
sig_block_all
();
56
57
}
// namespace sys
58
}
// namespace toolbox
59
60
#endif
// TOOLBOX_SYS_SIGNAL_HPP
TOOLBOX_API
#define TOOLBOX_API
Definition
Config.h:39
Time.hpp
toolbox::SigWait
Definition
Signal.hpp:27
toolbox::sys::SigWait::operator=
SigWait & operator=(const SigWait &)=delete
toolbox::sys::SigWait::operator=
SigWait & operator=(SigWait &&)=delete
toolbox::sys::SigWait::operator()
int operator()(std::chrono::duration< RepT, PeriodT > timeout) const
Definition
Signal.hpp:45
toolbox::sys::SigWait::SigWait
SigWait(const SigWait &)=delete
toolbox::sys::SigWait::SigWait
SigWait(SigWait &&)=delete
toolbox::sys::sig_block_all
void sig_block_all()
Block all signals.
Definition
Signal.cpp:82
toolbox::sys::Duration
Nanos Duration
Definition
Time.hpp:40
toolbox
Definition
Benchmark.cpp:26
Generated by
1.9.8