From 4010635b9c3d74e544d37d1e9295316cff01b014 Mon Sep 17 00:00:00 2001 From: Pixel Date: Sun, 9 Oct 2011 21:42:24 -0700 Subject: Starting to integrate libev; timer event works. --- src/Task.cc | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/Task.cc') diff --git a/src/Task.cc b/src/Task.cc index 73a2329..e5c971d 100644 --- a/src/Task.cc +++ b/src/Task.cc @@ -67,9 +67,27 @@ Balau::Task * Balau::Task::getCurrentTask() { void Balau::Task::waitFor(Balau::Events::BaseEvent * e) { e->registerOwner(this); - // probably have to register the event in the Task manager +} + +void Balau::Events::BaseEvent::doSignal() { + m_signal = true; + m_task->getTaskMan()->signalTask(m_task); } Balau::Events::TaskEvent::TaskEvent(Task * taskWaited) : m_taskWaited(taskWaited) { m_taskWaited->m_waitedBy.push_back(this); } + +Balau::Events::Timeout::Timeout(ev_tstamp tstamp) { + m_evt.set(this); + m_evt.set(tstamp); +} + +void Balau::Events::Timeout::gotOwner(Task * task) { + m_evt.set(task->getTaskMan()->getLoop()); + m_evt.start(); +} + +void Balau::Events::Timeout::evt_cb(ev::timer & w, int revents) { + doSignal(); +} -- cgit v1.2.3