From fa556a142512ab932b7359760e5e4585e4e035b6 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Fri, 12 Nov 2010 16:24:53 -0800 Subject: Add callback to socket.write(), fix test-sendfds --- src/node_io_watcher.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/node_io_watcher.cc b/src/node_io_watcher.cc index 3f85076279..62c5646463 100644 --- a/src/node_io_watcher.cc +++ b/src/node_io_watcher.cc @@ -38,6 +38,7 @@ static Persistent is_unix_socket_sym; static Persistent first_bucket_sym; static Persistent last_bucket_sym; static Persistent queue_size_sym; +static Persistent callback_sym; void IOWatcher::Initialize(Handle target) { @@ -73,6 +74,7 @@ void IOWatcher::Initialize(Handle target) { is_unix_socket_sym = NODE_PSYMBOL("isUnixSocket"); data_sym = NODE_PSYMBOL("data"); encoding_sym = NODE_PSYMBOL("encoding"); + callback_sym = NODE_PSYMBOL("callback"); ev_prepare_init(&dumper, IOWatcher::Dump); @@ -497,6 +499,17 @@ void IOWatcher::Dump() { written -= bucket_len - offset; + Local bucket_callback_v = bucket->Get(callback_sym); + if (bucket_callback_v->IsFunction()) { + Local bucket_callback = + Local::Cast(bucket_callback_v); + TryCatch try_catch; + bucket_callback->Call(io->handle_, 0, NULL); + if (try_catch.HasCaught()) { + FatalException(try_catch); + } + } + // Offset is now zero watcher->Set(offset_sym, Integer::NewFromUnsigned(0)); } -- cgit v1.2.1