%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
#include "env-inl.h" #include "node_external_reference.h" #include "util-inl.h" #include "v8.h" #include <cstdint> namespace node { namespace { using v8::Context; using v8::Function; using v8::FunctionCallbackInfo; using v8::Local; using v8::Object; using v8::Value; void SetupTimers(const FunctionCallbackInfo<Value>& args) { CHECK(args[0]->IsFunction()); CHECK(args[1]->IsFunction()); auto env = Environment::GetCurrent(args); env->set_immediate_callback_function(args[0].As<Function>()); env->set_timers_callback_function(args[1].As<Function>()); } void GetLibuvNow(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); args.GetReturnValue().Set(env->GetNow()); } void ScheduleTimer(const FunctionCallbackInfo<Value>& args) { auto env = Environment::GetCurrent(args); env->ScheduleTimer(args[0]->IntegerValue(env->context()).FromJust()); } void ToggleTimerRef(const FunctionCallbackInfo<Value>& args) { Environment::GetCurrent(args)->ToggleTimerRef(args[0]->IsTrue()); } void ToggleImmediateRef(const FunctionCallbackInfo<Value>& args) { Environment::GetCurrent(args)->ToggleImmediateRef(args[0]->IsTrue()); } void Initialize(Local<Object> target, Local<Value> unused, Local<Context> context, void* priv) { Environment* env = Environment::GetCurrent(context); env->SetMethod(target, "getLibuvNow", GetLibuvNow); env->SetMethod(target, "setupTimers", SetupTimers); env->SetMethod(target, "scheduleTimer", ScheduleTimer); env->SetMethod(target, "toggleTimerRef", ToggleTimerRef); env->SetMethod(target, "toggleImmediateRef", ToggleImmediateRef); target->Set(env->context(), FIXED_ONE_BYTE_STRING(env->isolate(), "immediateInfo"), env->immediate_info()->fields().GetJSArray()).Check(); } } // anonymous namespace void RegisterTimerExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(GetLibuvNow); registry->Register(SetupTimers); registry->Register(ScheduleTimer); registry->Register(ToggleTimerRef); registry->Register(ToggleImmediateRef); } } // namespace node NODE_MODULE_CONTEXT_AWARE_INTERNAL(timers, node::Initialize) NODE_MODULE_EXTERNAL_REFERENCE(timers, node::RegisterTimerExternalReferences)