#include <msp/core/systemerror.h>
#include <msp/strings/format.h>
#include <msp/time/units.h>
-#include "base.h"
+#include "eventobject.h"
+#include "handle.h"
+#include "handle_private.h"
#include "poll.h"
using namespace std;
using namespace Msp;
using namespace Msp::IO;
-inline int sys_poll_event(PollEvent event)
+inline short int sys_poll_event(PollEvent event)
{
int result = 0;
return result;
}
-inline PollEvent do_poll(Base &obj, PollEvent pe, int timeout)
+inline PollEvent do_poll(EventObject &obj, PollEvent pe, int timeout)
{
#ifdef WIN32
if(timeout<0)
timeout = INFINITE;
- DWORD ret = WaitForSingleObject(obj.get_event_handle(), timeout);
+ DWORD ret = WaitForSingleObject(*obj.get_event_handle(), timeout);
if(ret==WAIT_OBJECT_0)
return pe;
else if(ret==WAIT_FAILED)
return P_NONE;
#else
- pollfd pfd = { obj.get_event_handle(), sys_poll_event(pe), 0 };
+ pollfd pfd = { *obj.get_event_handle(), sys_poll_event(pe), 0 };
int ret = ::poll(&pfd, 1, timeout);
if(ret==-1)
objs_changed(false)
{ }
-void Poller::set_object(Base &obj, PollEvent ev)
+void Poller::set_object(EventObject &obj, PollEvent ev)
{
// Verify that the object has an event handle
if(ev)
priv->handles.clear();
for(EventMap::iterator i=objects.begin(); i!=objects.end(); ++i)
- priv->handles.push_back(i->first->get_event_handle());
+ priv->handles.push_back(*i->first->get_event_handle());
#else
priv->pfd.clear();
for(EventMap::iterator i=objects.begin(); i!=objects.end(); ++i)
{
pollfd p;
- p.fd = i->first->get_event_handle();
+ p.fd = *i->first->get_event_handle();
p.events = sys_poll_event(i->second);
priv->pfd.push_back(p);
}
}
-PollEvent poll(Base &obj, PollEvent pe)
+PollEvent poll(EventObject &obj, PollEvent pe)
{
return do_poll(obj, pe, -1);
}
-PollEvent poll(Base &obj, PollEvent pe, const Time::TimeDelta &timeout)
+PollEvent poll(EventObject &obj, PollEvent pe, const Time::TimeDelta &timeout)
{
if(timeout<Time::zero)
throw invalid_argument("poll");