summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrevor Norris <trev.norris@gmail.com>2014-11-14 16:15:06 -0800
committerTrevor Norris <trev.norris@gmail.com>2014-12-05 04:56:45 -0800
commit1293f0a228a3a01863896c82f6734aaaf93bd16b (patch)
treecabf6cd1d34fd7f504d5fce23cd44811b5e72e2f /src
parentadd955e6b831970fae6c9f693b64cb1f4aeb999d (diff)
downloadnode-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.cc23
-rw-r--r--src/async-wrap.h50
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,