Make onError work for TCPConnection.

This commit is contained in:
Ryan 2009-05-04 16:36:57 +02:00
Родитель 6149c6c49a
Коммит b763ee0ad4
1 изменённых файлов: 21 добавлений и 12 удалений

Просмотреть файл

@ -206,9 +206,11 @@ Connection::AfterResolve (eio_req *req)
return 0;
}
// return error?
oi_error e; // TODO better error!
connection->OnError(e);
return r | req->result;
return 0;
}
Handle<Value>
@ -305,17 +307,24 @@ Connection::OnReceive (const void *buf, size_t len)
void
Connection::OnError (oi_error e)
{
HandleScope scope;
Local<Object> protocol = GetProtocol();
Local<Value> callback_v = protocol->Get(ON_ERROR_SYMBOL);
if (!callback_v->IsFunction()) return;
Handle<Function> callback = Handle<Function>::Cast(callback_v);
// TODO call with error arg
callback->Call(protocol, 0, NULL);
}
#define DEFINE_SIMPLE_CALLBACK(name, symbol) \
void name () \
{ \
HandleScope scope; \
Local<Object> protocol = GetProtocol();\
Local<Value> callback_v = protocol->Get(symbol); \
if (!callback_v->IsFunction()) return; \
Handle<Function> callback = Handle<Function>::Cast(callback_v); \
callback->Call(protocol, 0, NULL); \
#define DEFINE_SIMPLE_CALLBACK(name, symbol) \
void name () \
{ \
HandleScope scope; \
Local<Object> protocol = GetProtocol(); \
Local<Value> callback_v = protocol->Get(symbol); \
if (!callback_v->IsFunction()) return; \
Handle<Function> callback = Handle<Function>::Cast(callback_v); \
callback->Call(protocol, 0, NULL); \
}
DEFINE_SIMPLE_CALLBACK(Connection::OnConnect, ON_CONNECT_SYMBOL)
@ -390,7 +399,7 @@ Acceptor::OnError (struct oi_error error)
{
HandleScope scope;
Local<Value> callback_v = handle_->Get(String::NewSymbol("onError"));
Local<Value> callback_v = handle_->Get(ON_ERROR_SYMBOL);
if (!callback_v->IsFunction()) return;
Local<Function> callback = Local<Function>::Cast(callback_v);
callback->Call(handle_, 0, NULL); // TODO args