Skip to content

Commit

Permalink
async-wrap: expose async-wrap as binding
Browse files Browse the repository at this point in the history
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: nodejs/node-v0.x-archive#8110
Signed-off-by: Trevor Norris <[email protected]>
Reviewed-by: Fedor Indutny <[email protected]>
Reviewed-by: Alexis Campailla <[email protected]>
Reviewed-by: Julien Gilli <[email protected]>
  • Loading branch information
trevnorris authored and piscisaureus committed Dec 9, 2014
1 parent f39b48c commit afe27e3
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 22 deletions.
23 changes: 23 additions & 0 deletions src/async-wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,36 @@

#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;
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) {
Expand Down Expand Up @@ -114,3 +135,5 @@ Handle<Value> AsyncWrap::MakeCallback(const Handle<Function> cb,
}

} // namespace node

NODE_MODULE_CONTEXT_AWARE_BUILTIN(async_wrap, node::Initialize)
50 changes: 28 additions & 22 deletions src/async-wrap.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit afe27e3

Please sign in to comment.