X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FFdEvent.cc;h=9cfb4108c7d67d0221aeec0da177d9b87f3a9a21;hb=bd9f9d3fd6fbcff0112a7bf48ab9284da9576b11;hp=afe10c7ef3bd2a1997c1466e44318a3e950fe1f3;hpb=412024ed31a4ab4eaea7a4165a434f8efebee325;p=senf.git diff --git a/Scheduler/FdEvent.cc b/Scheduler/FdEvent.cc index afe10c7..9cfb410 100644 --- a/Scheduler/FdEvent.cc +++ b/Scheduler/FdEvent.cc @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -52,7 +52,7 @@ prefix_ bool senf::scheduler::detail::FdDispatcher::add(FdEvent & event) for (FdSet::iterator i (range.first); i != range.second; ++i) events |= i->events_; if (event.events_ & events) - throw FdEvent::DuplicateEventRegistrationException(); + throw FdEvent::DuplicateEventRegistrationException() << "vinfo: " << event.v_info(); if (! detail::FdManager::instance().set(event.fd_, events | event.events_, &event)) return false; @@ -89,7 +89,7 @@ prefix_ void senf::scheduler::detail::FileDispatcher::add(FdEvent & event) for (FdSet::iterator i (range.first); i != range.second; ++i) events |= i->events_; if (event.events_ & events) - throw FdEvent::DuplicateEventRegistrationException(); + throw FdEvent::DuplicateEventRegistrationException() << "vinfo: " << event.v_info(); detail::FIFORunner::instance().enqueue(&event); fds_.insert(range.first, event); @@ -163,7 +163,7 @@ prefix_ void senf::scheduler::FdEvent::signal(int events) detail::FdDispatcher::FdSet::iterator const i_end (detail::FdDispatcher::instance().fds_.end()); bool all ((events & (EV_ERR | EV_HUP)) && ! (events & (EV_READ | EV_PRIO | EV_WRITE))); for (; i != i_end && fd_ == i->fd_; ++i) { - i->signaledEvents_ = events; + i->signaledEvents_ = events & (EV_ERR | EV_HUP | i->events_); if (i->events_ & events || all) i->setRunnable(); } @@ -201,7 +201,7 @@ prefix_ std::string senf::scheduler::FdEvent::v_info() #undef prefix_ //#include "FdEvent.mpp" - + // Local Variables: // mode: c++ // fill-column: 100