if (pipe(sigPipe_) <0)
SENF_THROW_SYSTEM_EXCEPTION("pipe()");
sigemptyset(&sigSet_);
- FdManager::instance().set(sigPipe_[0], FdManager::EV_READ, this);
+ detail::FdManager::instance().set(sigPipe_[0], detail::FdManager::EV_READ, this);
}
prefix_ senf::scheduler::detail::SignalDispatcher::~SignalDispatcher()
{
for (SignalSet::iterator i (handlers_.begin()); i != handlers_.end(); ++i) {
::signal(i->signal_, SIG_DFL);
- FIFORunner::instance().dequeue(&(*i));
+ detail::FIFORunner::instance().dequeue(&(*i));
}
sigprocmask(SIG_UNBLOCK, &sigSet_, 0);
- FdManager::instance().remove(sigPipe_[0]);
+ detail::FdManager::instance().remove(sigPipe_[0]);
close(sigPipe_[0]);
close(sigPipe_[1]);
}
handlers_.insert(event);
sigaddset(&sigSet_, event.signal_);
- FIFORunner::instance().enqueue(&event);
+ detail::FIFORunner::instance().enqueue(&event);
sigset_t sig;
sigemptyset(&sig);
prefix_ void senf::scheduler::detail::SignalDispatcher::remove(SignalEvent & event)
{
::signal(event.signal_, SIG_DFL);
- FIFORunner::instance().dequeue(&event);
+ detail::FIFORunner::instance().dequeue(&event);
handlers_.erase(event);
sigset_t sig;
sigemptyset(&sig);
if (i == handlers_.end())
return;
i->siginfo_ = info;
- i->runnable = true;
+ i->setRunnable();
}
prefix_ void senf::scheduler::detail::SignalDispatcher::sigHandler(int signal, ::siginfo_t * siginfo,
write(instance().sigPipe_[1], siginfo, sizeof(*siginfo));
}
+prefix_ void senf::scheduler::SignalEvent::v_run()
+{
+ cb_(siginfo_);
+}
+
+prefix_ char const * senf::scheduler::SignalEvent::v_type()
+ const
+{
+ return "si";
+}
+
+prefix_ std::string senf::scheduler::SignalEvent::v_info()
+ const
+{
+ return "";
+}
+
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
//#include "SignalEvent.mpp"