From f4bc7b38d1b96796b2b9330efcc1f335da57313b Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Wed, 24 Apr 2019 03:01:54 +0200 Subject: [PATCH] Port to Node.js 10, 11 and 12 --- src/AppWrapper.h | 22 +++++++++++----------- src/HttpRequestWrapper.h | 6 +++--- src/HttpResponseWrapper.h | 12 ++++++------ src/WebSocketWrapper.h | 6 +++--- src/addon.cpp | 8 ++++---- 5 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/AppWrapper.h b/src/AppWrapper.h index 46e9ead6..ae2ddf58 100644 --- a/src/AppWrapper.h +++ b/src/AppWrapper.h @@ -28,13 +28,13 @@ void uWS_App_ws(const FunctionCallbackInfo &args) { Local behaviorObject = Local::Cast(args[1]); /* maxPayloadLength */ - behavior.maxPayloadLength = behaviorObject->Get(String::NewFromUtf8(isolate, "maxPayloadLength"))->Int32Value(); + behavior.maxPayloadLength = behaviorObject->Get(String::NewFromUtf8(isolate, "maxPayloadLength"))->Int32Value(isolate->GetCurrentContext()).ToChecked(); /* idleTimeout */ - behavior.idleTimeout = behaviorObject->Get(String::NewFromUtf8(isolate, "idleTimeout"))->Int32Value(); + behavior.idleTimeout = behaviorObject->Get(String::NewFromUtf8(isolate, "idleTimeout"))->Int32Value(isolate->GetCurrentContext()).ToChecked(); /* Compression, map from 0, 1, 2 to disabled, shared, dedicated. This is actually the enum */ - behavior.compression = (uWS::CompressOptions) behaviorObject->Get(String::NewFromUtf8(isolate, "compression"))->Int32Value(); + behavior.compression = (uWS::CompressOptions) behaviorObject->Get(String::NewFromUtf8(isolate, "compression"))->Int32Value(isolate->GetCurrentContext()).ToChecked(); /* Open */ openPf.Reset(args.GetIsolate(), Local::Cast(behaviorObject->Get(String::NewFromUtf8(isolate, "open")))); @@ -66,7 +66,7 @@ void uWS_App_ws(const FunctionCallbackInfo &args) { Local openLf = Local::New(isolate, openPf); if (!openLf->IsUndefined()) { Local argv[] = {wsObject, reqObject}; - openLf->Call(isolate->GetCurrentContext()->Global(), 2, argv); + openLf->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 2, argv); } }; @@ -81,7 +81,7 @@ void uWS_App_ws(const FunctionCallbackInfo &args) { Local argv[3] = {Local::New(isolate, *(perSocketData->socketPf)), messageArrayBuffer, Boolean::New(isolate, opCode == uWS::OpCode::BINARY)}; - Local::New(isolate, messagePf)->Call(isolate->GetCurrentContext()->Global(), 3, argv); + Local::New(isolate, messagePf)->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 3, argv); /* Important: we clear the ArrayBuffer to make sure it is not invalidly used after return */ messageArrayBuffer->Neuter(); @@ -96,7 +96,7 @@ void uWS_App_ws(const FunctionCallbackInfo &args) { PerSocketData *perSocketData = (PerSocketData *) ws->getUserData(); Local argv[1] = {Local::New(isolate, *(perSocketData->socketPf)) }; - Local::New(isolate, drainPf)->Call(isolate->GetCurrentContext()->Global(), 1, argv); + Local::New(isolate, drainPf)->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 1, argv); }; } @@ -124,7 +124,7 @@ void uWS_App_ws(const FunctionCallbackInfo &args) { Local closeLf = Local::New(isolate, closePf); if (!closeLf->IsUndefined()) { Local argv[3] = {wsObject, Integer::New(isolate, code), messageArrayBuffer}; - closeLf->Call(isolate->GetCurrentContext()->Global(), 3, argv); + closeLf->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 3, argv); } delete perSocketData->socketPf; @@ -163,7 +163,7 @@ void uWS_App_get(F f, const FunctionCallbackInfo &args) { reqObject->SetAlignedPointerInInternalField(0, req); Local argv[] = {resObject, reqObject}; - Local::New(isolate, *pf)->Call(isolate->GetCurrentContext()->Global(), 2, argv); + Local::New(isolate, *pf)->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 2, argv); /* Properly invalidate req */ reqObject->SetAlignedPointerInInternalField(0, nullptr); @@ -190,7 +190,7 @@ void uWS_App_listen(const FunctionCallbackInfo &args) { auto cb = [&args](auto *token) { /* Return a false boolean if listen failed */ Local argv[] = {token ? Local::Cast(External::New(isolate, token)) : Local::Cast(Boolean::New(isolate, false))}; - Local::Cast(args[args.Length() - 1])->Call(isolate->GetCurrentContext()->Global(), 1, argv); + Local::Cast(args[args.Length() - 1])->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 1, argv); }; /* Host is first, if present */ @@ -277,7 +277,7 @@ void uWS_App(const FunctionCallbackInfo &args) { } /* ssl_prefer_low_memory_usage */ - ssl_options.ssl_prefer_low_memory_usage = Local::Cast(args[0])->Get(String::NewFromUtf8(isolate, "ssl_prefer_low_memory_usage"))->BooleanValue(); + ssl_options.ssl_prefer_low_memory_usage = Local::Cast(args[0])->Get(String::NewFromUtf8(isolate, "ssl_prefer_low_memory_usage"))->BooleanValue(isolate->GetCurrentContext()).ToChecked(); } app = new APP(ssl_options); @@ -341,7 +341,7 @@ void uWS_App(const FunctionCallbackInfo &args) { appTemplate->PrototypeTemplate()->Set(String::NewFromUtf8(isolate, "ws"), FunctionTemplate::New(isolate, uWS_App_ws)); appTemplate->PrototypeTemplate()->Set(String::NewFromUtf8(isolate, "listen"), FunctionTemplate::New(isolate, uWS_App_listen)); - Local localApp = appTemplate->GetFunction()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); + Local localApp = appTemplate->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); localApp->SetAlignedPointerInInternalField(0, app); /* Add this to our delete list */ diff --git a/src/HttpRequestWrapper.h b/src/HttpRequestWrapper.h index 1f906744..887514cb 100644 --- a/src/HttpRequestWrapper.h +++ b/src/HttpRequestWrapper.h @@ -25,7 +25,7 @@ struct HttpRequestWrapper { for (auto p : *req) { Local argv[] = {String::NewFromUtf8(isolate, p.first.data(), String::kNormalString, p.first.length()), String::NewFromUtf8(isolate, p.second.data(), String::kNormalString, p.second.length())}; - cb->Call(isolate->GetCurrentContext()->Global(), 2, argv); + cb->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 2, argv); } } } @@ -34,7 +34,7 @@ struct HttpRequestWrapper { static void req_getParameter(const FunctionCallbackInfo &args) { auto *req = getHttpRequest(args); if (req) { - int index = args[0]->Uint32Value(); + int index = args[0]->Uint32Value(isolate->GetCurrentContext()).ToChecked(); std::string_view parameter = req->getParameter(index); args.GetReturnValue().Set(String::NewFromUtf8(isolate, parameter.data(), v8::String::kNormalString, parameter.length())); @@ -100,7 +100,7 @@ struct HttpRequestWrapper { reqTemplateLocal->PrototypeTemplate()->Set(String::NewFromUtf8(isolate, "forEach"), FunctionTemplate::New(isolate, req_forEach)); /* Create the template */ - Local reqObjectLocal = reqTemplateLocal->GetFunction()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); + Local reqObjectLocal = reqTemplateLocal->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); reqTemplate.Reset(isolate, reqObjectLocal); } diff --git a/src/HttpResponseWrapper.h b/src/HttpResponseWrapper.h index 241bb298..6adb5a87 100644 --- a/src/HttpResponseWrapper.h +++ b/src/HttpResponseWrapper.h @@ -45,7 +45,7 @@ struct HttpResponseWrapper { Local dataArrayBuffer = ArrayBuffer::New(isolate, (void *) data.data(), data.length()); Local argv[] = {dataArrayBuffer, Boolean::New(isolate, last)}; - Local::New(isolate, p)->Call(isolate->GetCurrentContext()->Global(), 2, argv); + Local::New(isolate, p)->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 2, argv); dataArrayBuffer->Neuter(); }); @@ -71,7 +71,7 @@ struct HttpResponseWrapper { /* Mark this resObject invalid */ Local::New(isolate, resObject)->SetAlignedPointerInInternalField(0, nullptr); - Local::New(isolate, p)->Call(isolate->GetCurrentContext()->Global(), 0, nullptr); + Local::New(isolate, p)->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 0, nullptr); }); args.GetReturnValue().Set(args.Holder()); @@ -111,7 +111,7 @@ struct HttpResponseWrapper { HandleScope hs(isolate); Local argv[] = {Integer::NewFromUnsigned(isolate, offset)}; - return Local::New(isolate, p)->Call(isolate->GetCurrentContext()->Global(), 1, argv)->BooleanValue(); + return Local::New(isolate, p)->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 1, argv).ToLocalChecked()->BooleanValue(isolate->GetCurrentContext()).ToChecked(); /* How important is this return? */ }); @@ -162,7 +162,7 @@ struct HttpResponseWrapper { int totalSize = 0; if (args.Length() > 1) { - totalSize = args[1]->Uint32Value(); + totalSize = args[1]->Uint32Value(isolate->GetCurrentContext()).ToChecked(); } auto [ok, hasResponded] = res->tryEnd(data.getString(), totalSize); @@ -222,7 +222,7 @@ struct HttpResponseWrapper { if (res) { res->cork([cb = Local::Cast(args[0])]() { - cb->Call(isolate->GetCurrentContext()->Global(), 0, nullptr); + cb->Call(isolate->GetCurrentContext(), isolate->GetCurrentContext()->Global(), 0, nullptr); }); args.GetReturnValue().Set(args.Holder()); @@ -254,7 +254,7 @@ struct HttpResponseWrapper { resTemplateLocal->PrototypeTemplate()->Set(String::NewFromUtf8(isolate, "experimental_cork"), FunctionTemplate::New(isolate, res_cork)); /* Create our template */ - Local resObjectLocal = resTemplateLocal->GetFunction()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); + Local resObjectLocal = resTemplateLocal->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); resTemplate[SSL].Reset(isolate, resObjectLocal); } diff --git a/src/WebSocketWrapper.h b/src/WebSocketWrapper.h index f38d677d..67d7035e 100644 --- a/src/WebSocketWrapper.h +++ b/src/WebSocketWrapper.h @@ -62,7 +62,7 @@ struct WebSocketWrapper { if (ws) { int code = 0; if (args.Length() >= 1) { - code = args[0]->Uint32Value(); + code = args[0]->Uint32Value(isolate->GetCurrentContext()).ToChecked(); } NativeString message(args.GetIsolate(), args[1]); @@ -107,7 +107,7 @@ struct WebSocketWrapper { return; } - bool ok = ws->send(message.getString(), args[1]->BooleanValue() ? uWS::OpCode::BINARY : uWS::OpCode::TEXT); + bool ok = ws->send(message.getString(), args[1]->BooleanValue(isolate->GetCurrentContext()).ToChecked() ? uWS::OpCode::BINARY : uWS::OpCode::TEXT); args.GetReturnValue().Set(Boolean::New(isolate, ok)); } @@ -133,7 +133,7 @@ struct WebSocketWrapper { wsTemplateLocal->PrototypeTemplate()->Set(String::NewFromUtf8(isolate, "publish"), FunctionTemplate::New(isolate, uWS_WebSocket_publish)); /* Create the template */ - Local wsObjectLocal = wsTemplateLocal->GetFunction()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); + Local wsObjectLocal = wsTemplateLocal->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); wsTemplate[SSL].Reset(isolate, wsObjectLocal); } diff --git a/src/addon.cpp b/src/addon.cpp index 5f98feee..eaaa43a8 100644 --- a/src/addon.cpp +++ b/src/addon.cpp @@ -77,12 +77,12 @@ void Main(Local exports) { });*/ /* uWS namespace */ - exports->Set(String::NewFromUtf8(isolate, "App"), FunctionTemplate::New(isolate, uWS_App)->GetFunction()); - exports->Set(String::NewFromUtf8(isolate, "SSLApp"), FunctionTemplate::New(isolate, uWS_App)->GetFunction()); - exports->Set(String::NewFromUtf8(isolate, "free"), FunctionTemplate::New(isolate, uWS_free)->GetFunction()); + exports->Set(String::NewFromUtf8(isolate, "App"), FunctionTemplate::New(isolate, uWS_App)->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()); + exports->Set(String::NewFromUtf8(isolate, "SSLApp"), FunctionTemplate::New(isolate, uWS_App)->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()); + exports->Set(String::NewFromUtf8(isolate, "free"), FunctionTemplate::New(isolate, uWS_free)->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()); /* Expose some µSockets functions directly under uWS namespace */ - exports->Set(String::NewFromUtf8(isolate, "us_listen_socket_close"), FunctionTemplate::New(isolate, uWS_us_listen_socket_close)->GetFunction()); + exports->Set(String::NewFromUtf8(isolate, "us_listen_socket_close"), FunctionTemplate::New(isolate, uWS_us_listen_socket_close)->GetFunction(isolate->GetCurrentContext()).ToLocalChecked()); /* Compression enum */ exports->Set(String::NewFromUtf8(isolate, "DISABLED"), Integer::NewFromUnsigned(isolate, uWS::DISABLED));