X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FSignalEvent.cc;h=a521bd8c61ea0ce9ea855f3abe3114c1bd6f9402;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=f08385215650df212b9c757576995c7f67e445d6;hpb=925317c7f45c32b01ab9292023db3f372b74bf0f;p=senf.git diff --git a/Scheduler/SignalEvent.cc b/Scheduler/SignalEvent.cc index f083852..a521bd8 100644 --- a/Scheduler/SignalEvent.cc +++ b/Scheduler/SignalEvent.cc @@ -40,17 +40,17 @@ prefix_ senf::scheduler::detail::SignalDispatcher::SignalDispatcher() 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]); } @@ -64,7 +64,7 @@ prefix_ void senf::scheduler::detail::SignalDispatcher::add(SignalEvent & event) handlers_.insert(event); sigaddset(&sigSet_, event.signal_); - FIFORunner::instance().enqueue(&event); + detail::FIFORunner::instance().enqueue(&event); sigset_t sig; sigemptyset(&sig); @@ -89,7 +89,7 @@ prefix_ void senf::scheduler::detail::SignalDispatcher::add(SignalEvent & event) 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); @@ -106,7 +106,7 @@ prefix_ void senf::scheduler::detail::SignalDispatcher::signal(int events) 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, @@ -119,6 +119,23 @@ prefix_ void senf::scheduler::detail::SignalDispatcher::sigHandler(int signal, : 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"