X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FScheduler%2FPoller.ct;h=c9ea3dd482c70cfd6d8abbf508d5caac47bb8034;hb=9bc655e14d2d8c204ed835896cb51e42d49bd68f;hp=92a13e627f8d996a43e4222809a4dfa5f507a933;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Scheduler/Poller.ct b/senf/Scheduler/Poller.ct index 92a13e6..c9ea3dd 100644 --- a/senf/Scheduler/Poller.ct +++ b/senf/Scheduler/Poller.ct @@ -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 @@ -27,7 +27,7 @@ // Custom includes #include -#include "../Utils/Exception.hh" +#include #define prefix_ ///////////////////////////////ct.p//////////////////////////////////////// @@ -36,7 +36,7 @@ template prefix_ bool senf::scheduler::detail::Poller::set(int fd, int events, Value * data) { struct epoll_event ev = { events, { data } }; - if (epoll_ctl(epollFd_, EPOLL_CTL_ADD, fd, &ev) != -1) + if (epoll_ctl(epollFd_, EPOLL_CTL_ADD, fd, &ev) != -1) return true; if (errno == EEXIST) if (epoll_ctl(epollFd_, EPOLL_CTL_MOD, fd, &ev) != -1) @@ -65,14 +65,12 @@ prefix_ typename senf::scheduler::detail::Poller::range senf::scheduler:: { static epoll_event events[NumEvents]; int rv (0); - for (;;) { - rv = epoll_wait(epollFd_, events, NumEvents, timeout_); - if (rv == -1) { - if (errno == EINTR) - continue; + rv = epoll_wait(epollFd_, events, NumEvents, timeout_); + if (rv == -1) { + if (errno == EINTR) + rv = 0; + else SENF_THROW_SYSTEM_EXCEPTION("epoll_wait()"); - } - break; } return boost::make_iterator_range( boost::make_transform_iterator(events, GetPollResult()),