diff options
author | Trevor Norris <trev.norris@gmail.com> | 2014-11-14 16:15:06 -0800 |
---|---|---|
committer | Trevor Norris <trev.norris@gmail.com> | 2014-12-05 04:56:45 -0800 |
commit | 1293f0a228a3a01863896c82f6734aaaf93bd16b (patch) | |
tree | cabf6cd1d34fd7f504d5fce23cd44811b5e72e2f /src | |
parent | add955e6b831970fae6c9f693b64cb1f4aeb999d (diff) | |
download | node-new-1293f0a228a3a01863896c82f6734aaaf93bd16b.tar.gz |
async-wrap: expose async-wrap as binding
Expose basic hooks for AsyncWrap via the async_wrap binding. Right now
only the PROVIDER types are exposed. This is a preliminary step before
more functionality is added.
PR-URL: https://github.com/joyent/node/pull/8110
Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Fedor Indutny <fedor@indutny.com>
Reviewed-by: Alexis Campailla <alexis@janeasystems.com>
Reviewed-by: Julien Gilli <julien.gilli@joyent.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/async-wrap.cc | 23 | ||||
-rw-r--r-- | src/async-wrap.h | 50 |
2 files changed, 51 insertions, 22 deletions
diff --git a/src/async-wrap.cc b/src/async-wrap.cc index 66455a3046..508accf06c 100644 --- a/src/async-wrap.cc +++ b/src/async-wrap.cc @@ -28,8 +28,12 @@ #include "v8.h" +using v8::Context; using v8::Function; using v8::Handle; +using v8::HandleScope; +using v8::Integer; +using v8::Isolate; using v8::Local; using v8::Object; using v8::TryCatch; @@ -37,6 +41,23 @@ using v8::Value; namespace node { +static void Initialize(Handle<Object> target, + Handle<Value> unused, + Handle<Context> context) { + Environment* env = Environment::GetCurrent(context); + Isolate* isolate = env->isolate(); + HandleScope scope(isolate); + + Local<Object> async_providers = Object::New(isolate); +#define V(PROVIDER) \ + async_providers->Set(FIXED_ONE_BYTE_STRING(isolate, #PROVIDER), \ + Integer::New(isolate, AsyncWrap::PROVIDER_ ## PROVIDER)); + NODE_ASYNC_PROVIDER_TYPES(V) +#undef V + target->Set(FIXED_ONE_BYTE_STRING(isolate, "Providers"), async_providers); +} + + Handle<Value> AsyncWrap::MakeCallback(const Handle<Function> cb, int argc, Handle<Value>* argv) { @@ -114,3 +135,5 @@ Handle<Value> AsyncWrap::MakeCallback(const Handle<Function> cb, } } // namespace node + +NODE_MODULE_CONTEXT_AWARE_BUILTIN(async_wrap, node::Initialize) diff --git a/src/async-wrap.h b/src/async-wrap.h index f53246f38d..cfdaf50d52 100644 --- a/src/async-wrap.h +++ b/src/async-wrap.h @@ -28,31 +28,37 @@ namespace node { +#define NODE_ASYNC_PROVIDER_TYPES(V) \ + V(NONE) \ + V(CARES) \ + V(CONNECTWRAP) \ + V(CRYPTO) \ + V(FSEVENTWRAP) \ + V(FSREQWRAP) \ + V(GETADDRINFOREQWRAP) \ + V(GETNAMEINFOREQWRAP) \ + V(PIPEWRAP) \ + V(PROCESSWRAP) \ + V(QUERYWRAP) \ + V(REQWRAP) \ + V(SHUTDOWNWRAP) \ + V(SIGNALWRAP) \ + V(STATWATCHER) \ + V(TCPWRAP) \ + V(TIMERWRAP) \ + V(TLSWRAP) \ + V(TTYWRAP) \ + V(UDPWRAP) \ + V(WRITEWRAP) \ + V(ZLIB) + class AsyncWrap : public BaseObject { public: enum ProviderType { - PROVIDER_NONE, - PROVIDER_CARES, - PROVIDER_CONNECTWRAP, - PROVIDER_CRYPTO, - PROVIDER_FSEVENTWRAP, - PROVIDER_FSREQWRAP, - PROVIDER_GETADDRINFOREQWRAP, - PROVIDER_GETNAMEINFOREQWRAP, - PROVIDER_PIPEWRAP, - PROVIDER_PROCESSWRAP, - PROVIDER_QUERYWRAP, - PROVIDER_REQWRAP, - PROVIDER_SHUTDOWNWRAP, - PROVIDER_SIGNALWRAP, - PROVIDER_STATWATCHER, - PROVIDER_TCPWRAP, - PROVIDER_TIMERWRAP, - PROVIDER_TLSWRAP, - PROVIDER_TTYWRAP, - PROVIDER_UDPWRAP, - PROVIDER_WRITEWRAP, - PROVIDER_ZLIB +#define V(PROVIDER) \ + PROVIDER_ ## PROVIDER, + NODE_ASYNC_PROVIDER_TYPES(V) +#undef V }; inline AsyncWrap(Environment* env, |