signalable.cpp
Go to the documentation of this file.
/*
* Copyright © 2013 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authored by: Thomas Voß <thomas.voss@canonical.com>
*/
#include <core/posix/signalable.h>
namespace core
{
namespace posix
{
struct Signalable::Private
{
pid_t pid;
};
Signalable::Signalable(pid_t pid) : d(new Private{pid})
{
}
void Signalable::send_signal_or_throw(Signal signal)
{
auto result = ::kill(d->pid, static_cast<int>(signal));
if (result == -1)
throw std::system_error(errno, std::system_category());
}
void Signalable::send_signal(Signal signal, std::error_code& e) noexcept
{
auto result = ::kill(d->pid, static_cast<int>(signal));
if (result == -1)
{
e = std::error_code(errno, std::system_category());
}
}
}
}
core::posix::Signalable::send_signal
virtual void send_signal(Signal signal, std::error_code &e) noexcept(true)
Sends a signal to this signalable object.
Definition: signalable.cpp:42
core::posix::Signalable::Signalable
CORE_POSIX_DLL_LOCAL Signalable(pid_t pid)
Definition: signalable.cpp:30
core::posix::Signalable::send_signal_or_throw
virtual void send_signal_or_throw(Signal signal)
Sends a signal to this signalable object.
Definition: signalable.cpp:34
core::posix::Signal
Signal
The Signal enum collects the most common POSIX signals.
Definition: signal.h:39
core
Definition: child_process.h:32
signalable.h
core::posix::Signalable::Private
Definition: signalable.cpp:26
core::posix::Signalable::Private::pid
pid_t pid
Definition: signalable.cpp:27