6#include <unordered_map>
8#include <sys/signalfd.h>
50 if (
d->_signalRefCount.count(
signum) != 0 &&
d->_signalRefCount[
signum] > 0 ) {
56 d->_signalRefCount.erase (
signum );
67 for (
const auto &
sig :
d->_signalRefCount ) {
85 if (
d->_signalFd !=
aFd ) {
98 if ( !
d->_signalRefCount.count(
signum) ||
d->_signalRefCount[
signum] == 0 ) {
103 if (
d->_signalRefCount[
signum] <= 0 ) {
105 d->_signalRefCount.erase(
signum);
110 for (
const auto &
sig :
d->_signalRefCount ) {
116 WAR <<
"Failed to update signalfd with errno: " <<
zypp::Errno() << std::endl;
126 if (
d->_signalRefCount.size () == 0 ) {
135 return d_func()->_sigReceived;
143 WAR <<
"Failed to read from signalfd" << std::endl;
147 if (
d->_signalRefCount.count (
sfd_si.ssi_signo ))
148 d->_sigReceived.emit(
sfd_si.ssi_signo );
150 WAR <<
"Received unexpected UNIX signal on signalFD: " <<
sfd_si.ssi_signo << std::endl;
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
void resetDispose()
Set no dispose function.
Convenience errno wrapper.
void updateFdWatch(int fd, int mode)
void removeFdWatch(int fd)
std::unordered_map< int, int > _signalRefCount
UnixSignalSourcePrivate(UnixSignalSource &p)
Signal< void(int)> _sigReceived
bool addSignal(int signum)
void onFdReady(int fd, int events) override
bool removeSignal(int signum)
static UnixSignalSourceRef create()
~UnixSignalSource() override
void onSignal(int signal) override
SignalProxy< void(int signum)> sigReceived()
AutoDispose<int> calling ::close
#define ZYPP_IMPL_PRIVATE(Class)
#define ZYPP_DECLARE_PUBLIC(Class)