diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2013-12-21 18:32:27 -0800 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2013-12-21 18:32:27 -0800 |
commit | 9754372d5e4125bf5850d9cd3ae93d529efdef8d (patch) | |
tree | fc20e375256b95bbd13fecde0d85181100a198e4 /src/Selectable.cc | |
parent | 9697add8b75b96662c8d39477e58d5841c4b9cba (diff) |
Preliminary WebSocket protocol support.
Diffstat (limited to 'src/Selectable.cc')
-rw-r--r-- | src/Selectable.cc | 7 |
1 files changed, 6 insertions, 1 deletions
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<SelectableEvent, &SelectableEvent::evt_cb>(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; |