From 9754372d5e4125bf5850d9cd3ae93d529efdef8d Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Sat, 21 Dec 2013 18:32:27 -0800 Subject: Preliminary WebSocket protocol support. --- src/Selectable.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/Selectable.cc') diff --git a/src/Selectable.cc b/src/Selectable.cc index 798a448..4213d34 100644 --- a/src/Selectable.cc +++ b/src/Selectable.cc @@ -52,6 +52,8 @@ void Balau::Selectable::SelectableEvent::gotOwner(Task * task) { } else { Printer::elog(E_SELECT, "...with a new task (%p -> %p); stopping first", m_task, task); m_evt.stop(); + m_evt.set(this); + m_evt.set(m_fd, m_evtType); } m_task = task; m_evt.set(task->getLoop()); @@ -96,6 +98,7 @@ ssize_t Balau::Selectable::read(void * buf, size_t count) throw (GeneralExceptio ssize_t r = recv(getSocket(m_fd), (char *) buf, count, 0); if (r >= 0) { + m_evtR->resetMaybe(); if (r == 0) close(); return r; @@ -137,8 +140,10 @@ ssize_t Balau::Selectable::write(const void * buf, size_t count) throw (GeneralE EAssert(r != 0, "send() returned 0 (broken pipe ?)"); - if (r > 0) + if (r > 0) { + m_evtW->resetMaybe(); return r; + } #ifndef _WIN32 int err = errno; -- cgit v1.2.3