22 #ifndef SRC_ASYNC_WRAP_H_ 23 #define SRC_ASYNC_WRAP_H_ 25 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 35 #define NODE_ASYNC_ID_OFFSET 0xA1C 37 #define NODE_ASYNC_NON_CRYPTO_PROVIDER_TYPES(V) \ 42 V(GETADDRINFOREQWRAP) \ 43 V(GETNAMEINFOREQWRAP) \ 45 V(HTTP2SESSIONSHUTDOWNWRAP) \ 66 #define NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V) \ 69 V(RANDOMBYTESREQUEST) \ 72 #define NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V) 73 #endif // HAVE_OPENSSL 75 #define NODE_ASYNC_PROVIDER_TYPES(V) \ 76 NODE_ASYNC_NON_CRYPTO_PROVIDER_TYPES(V) \ 77 NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V) 81 class AsyncWrap :
public BaseObject {
85 PROVIDER_ ## PROVIDER, 86 NODE_ASYNC_PROVIDER_TYPES(
V)
96 AsyncWrap(Environment* env,
97 v8::Local<v8::Object>
object,
98 ProviderType provider,
101 virtual ~AsyncWrap();
103 static void AddWrapMethods(Environment* env,
104 v8::Local<v8::FunctionTemplate> constructor,
105 int flags = kFlagNone);
107 static void Initialize(v8::Local<v8::Object> target,
108 v8::Local<v8::Value> unused,
109 v8::Local<v8::Context> context);
111 static void GetAsyncId(
const v8::FunctionCallbackInfo<v8::Value>& args);
112 static void PushAsyncIds(
const v8::FunctionCallbackInfo<v8::Value>& args);
113 static void PopAsyncIds(
const v8::FunctionCallbackInfo<v8::Value>& args);
114 static void AsyncIdStackSize(
const v8::FunctionCallbackInfo<v8::Value>& args);
115 static void ClearIdStack(
const v8::FunctionCallbackInfo<v8::Value>& args);
116 static void AsyncReset(
const v8::FunctionCallbackInfo<v8::Value>& args);
117 static void QueueDestroyId(
const v8::FunctionCallbackInfo<v8::Value>& args);
120 v8::Local<v8::Object>
object,
121 v8::Local<v8::String> type,
125 static void EmitBefore(Environment* env,
double id);
126 static void EmitAfter(Environment* env,
double id);
128 inline ProviderType provider_type()
const;
130 inline double get_id()
const;
132 inline double get_trigger_id()
const;
134 void AsyncReset(
bool silent =
false);
137 v8::MaybeLocal<v8::Value>
MakeCallback(
const v8::Local<v8::Function> cb,
139 v8::Local<v8::Value>* argv);
141 const v8::Local<v8::String> symbol,
143 v8::Local<v8::Value>* argv);
144 inline v8::MaybeLocal<v8::Value>
MakeCallback(uint32_t index,
146 v8::Local<v8::Value>* argv);
148 virtual size_t self_size()
const = 0;
152 const ProviderType provider_type_;
161 bool DomainEnter(Environment* env, v8::Local<v8::Object>
object);
162 bool DomainExit(Environment* env, v8::Local<v8::Object>
object);
166 #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 168 #endif // SRC_ASYNC_WRAP_H_
async_context EmitAsyncInit(Isolate *isolate, Local< Object > resource, const char *name, async_id trigger_async_id)
bool DomainEnter(Environment *env, Local< Object > object)
void Initialize(Local< Object > target, Local< Value > unused, Local< Context > context, void *priv)
MaybeLocal< Value > MakeCallback(Isolate *isolate, Local< Object > recv, Local< Function > callback, int argc, Local< Value > *argv, async_id asyncId, async_id triggerAsyncId)
void LoadAsyncWrapperInfo(Environment *env)
bool DomainExit(Environment *env, v8::Local< v8::Object > object)