X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fpoll.cpp;fp=source%2Fio%2Fpoll.cpp;h=a0ccf84a4c07fcf5c601edf8eac6f943241c1245;hp=dce1912f830e27921df6835d3b8e96b9969279f3;hb=8f2711fba7a2817840038630d9cf9a2060ecbe8e;hpb=c7afef88380ebebc8c2b04e48664d73281ec8848 diff --git a/source/io/poll.cpp b/source/io/poll.cpp index dce1912..a0ccf84 100644 --- a/source/io/poll.cpp +++ b/source/io/poll.cpp @@ -1,10 +1,13 @@ #include +#include +#include #include #include -#include "except.h" #include "base.h" #include "poll.h" +using namespace std; + namespace { using namespace Msp; @@ -15,7 +18,7 @@ inline int sys_poll_event(PollEvent event) int result = 0; if(event&~(P_INPUT|P_PRIO|P_OUTPUT)) - throw InvalidParameterValue("Invalid poll events"); + throw invalid_argument("sys_poll_event"); #ifndef WIN32 if(event&P_INPUT) @@ -60,7 +63,7 @@ inline PollEvent do_poll(Base &obj, PollEvent pe, int timeout) if(ret==WAIT_OBJECT_0) return pe; else if(ret==WAIT_FAILED) - throw SystemError("Poll failed", GetLastError()); + throw system_error("WaitForSingleObject"); return P_NONE; #else @@ -72,7 +75,7 @@ inline PollEvent do_poll(Base &obj, PollEvent pe, int timeout) if(errno==EINTR) return P_NONE; else - throw SystemError("Poll failed", errno); + throw system_error("poll"); } return poll_event_from_sys(pfd.revents); @@ -108,7 +111,7 @@ void Poller::set_object(Base &obj, PollEvent ev) { #ifdef WIN32 if(objects.size()>=MAXIMUM_WAIT_OBJECTS) - throw InvalidState("Maximum number of wait objects reached"); + throw logic_error("Maximum number of wait objects reached"); #endif objects.insert(SlotMap::value_type(&obj, Slot(&obj, ev))); @@ -124,7 +127,7 @@ int Poller::poll() int Poller::poll(const Time::TimeDelta &timeout) { if(timeout(timeout/Time::msec)); } @@ -168,7 +171,7 @@ int Poller::do_poll(int timeout) return 1; } else if(ret==WAIT_FAILED) - throw SystemError("Poll failed", GetLastError()); + throw system_error("WaitForMultipleObjects"); return 0; #else @@ -178,7 +181,7 @@ int Poller::do_poll(int timeout) if(errno==EINTR) return 0; else - throw SystemError("Poll failed", errno); + throw system_error("poll"); } int n = ret; @@ -203,7 +206,7 @@ PollEvent poll(Base &obj, PollEvent pe) PollEvent poll(Base &obj, PollEvent pe, const Time::TimeDelta &timeout) { if(timeout(timeout/Time::msec)); }