summaryrefslogtreecommitdiff
path: root/src/Selectable.cc
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-12-21 18:32:27 -0800
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-12-21 18:32:27 -0800
commit9754372d5e4125bf5850d9cd3ae93d529efdef8d (patch)
treefc20e375256b95bbd13fecde0d85181100a198e4 /src/Selectable.cc
parent9697add8b75b96662c8d39477e58d5841c4b9cba (diff)
Preliminary WebSocket protocol support.
Diffstat (limited to 'src/Selectable.cc')
-rw-r--r--src/Selectable.cc7
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;