1// Copyright Joyent, Inc. and other Node contributors. 2// 3// Permission is hereby granted, free of charge, to any person obtaining a 4// copy of this software and associated documentation files (the 5// "Software"), to deal in the Software without restriction, including 6// without limitation the rights to use, copy, modify, merge, publish, 7// distribute, sublicense, and/or sell copies of the Software, and to permit 8// persons to whom the Software is furnished to do so, subject to the 9// following conditions: 10// 11// The above copyright notice and this permission notice shall be included 12// in all copies or substantial portions of the Software. 13// 14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20// USE OR OTHER DEALINGS IN THE SOFTWARE. 21 22#ifndef SRC_ASYNC_WRAP_INL_H_ 23#define SRC_ASYNC_WRAP_INL_H_ 24 25#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 26 27#include "async_wrap.h" 28#include "base_object-inl.h" 29#include "node_internals.h" 30 31namespace node { 32 33inline AsyncWrap::ProviderType AsyncWrap::provider_type() const { 34 return provider_type_; 35} 36 37inline AsyncWrap::ProviderType AsyncWrap::set_provider_type( 38 AsyncWrap::ProviderType provider) { 39 provider_type_ = provider; 40 return provider_type_; 41} 42 43inline double AsyncWrap::get_async_id() const { 44 return async_id_; 45} 46 47 48inline double AsyncWrap::get_trigger_async_id() const { 49 return trigger_async_id_; 50} 51 52 53inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback( 54 const v8::Local<v8::String> symbol, 55 int argc, 56 v8::Local<v8::Value>* argv) { 57 return MakeCallback(symbol.As<v8::Name>(), argc, argv); 58} 59 60 61inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback( 62 const v8::Local<v8::Symbol> symbol, 63 int argc, 64 v8::Local<v8::Value>* argv) { 65 return MakeCallback(symbol.As<v8::Name>(), argc, argv); 66} 67 68 69inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback( 70 const v8::Local<v8::Name> symbol, 71 int argc, 72 v8::Local<v8::Value>* argv) { 73 v8::Local<v8::Value> cb_v; 74 if (!object()->Get(env()->context(), symbol).ToLocal(&cb_v)) 75 return v8::MaybeLocal<v8::Value>(); 76 if (!cb_v->IsFunction()) { 77 v8::Isolate* isolate = env()->isolate(); 78 return Undefined(isolate); 79 } 80 return MakeCallback(cb_v.As<v8::Function>(), argc, argv); 81} 82 83} // namespace node 84 85#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 86 87#endif // SRC_ASYNC_WRAP_INL_H_ 88